{"data":{"id":283,"slug":"indoor-market-hall-and-traders","title":"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.","description":"A realistic indoor market hall in metre units, built so a developer can assemble a covered hall of mixed traders and stock it. The shell is a 4 m grid: a cast iron column module, a roof truss bay with a patent glazed ridge rooflight, brick wall, clerestory and service door modules, a 2 m paving bay and an entrance arch with a pair of iron gates. The trading floor is a 3 m stall module in two kinds, a lock up unit with a roller shutter over a counter and stocked shelves, and an open stall with a striped canvas canopy and a boarded counter, with a corner unit that turns a row, a 1.5 m counter module, back shelving, an awning strip, a produce display slope, a hanging stock rail, a glazed display case, counter scales, a till and card reader, a cash box, a stool, a stock trolley and a folding table. The goods are generic market stock: fruit and veg crates, flower buckets, bakery and haberdashery trays, preserve and cheese, ceramics and homeware, fabric bolts, second hand books, records, plant pots, a tool pegboard and a luggage rack. The hall dresses its aisles with benches, litter bins, a recycling station, a cleaning trolley, an information board, a wayfinding sign, cafe tables, planters, a fire point and a porter's barrow. Roller shutters, the service door, the entrance gates, the till drawer, the cash box lid, the bin hood, the sliding case doors, the scale pan and the trolley and barrow wheels ship rigid node transform clips. Awning canvas, pigeon netting, hanging cloth, sacking, the mop head and the barrow lashing are deliberately static: a flexible sheet or a slack line is not reachable with one rigid node transform, and the goods are fixed stock in their displays. No real market, hall, shop, brand or trader appears anywhere: every fascia, sign, board, packet and label is a blank colour field. CC0 geometry prepared for human review.","url":"https://3dassets.dev/packs/indoor-market-hall-and-traders","coverUrl":"https://cdn.3dassets.dev/assets/34887/v1/poster.webp","assetCount":53,"aiGenerated":true,"aiGeneratedAssetCount":53,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":10773856,"totalTriangles":271456,"starterScene":{"id":"34887","slug":"indoor-market-hall-and-traders-covered-m-3aaa6199-starter-scene","title":"Covered market hall, traders trading (Indoor Market Hall and Traders)","summary":"A Victorian covered market hall in one place: three roof bays of iron truss and glazed rooflight on two rows of cast iron columns, over a 12 m by 16 m paved floor inside a brick shell with clerestory windows and a service door. A row of lock up units runs down the left wall,...","description":"A Victorian covered market hall in one place: three roof bays of iron truss and glazed rooflight on two rows of cast iron columns, over a 12 m by 16 m paved floor inside a brick shell with clerestory windows and a service door. A row of lock up units runs down the left wall, two shuttered and two trading with hardware, bags and homeware over their counters under striped awnings. Three rows of open stalls fill the middle aisle: the greengrocer with a display slope and crates, the baker and the deli with trays, jars and truckles, the florist with tiered buckets, the draper with bolts and a stock rail, and a corner unit of second hand books and records. Blank hanging signs are hung off the frame, the hall clock is bracketed off the back wall, and benches, bins, a wayfinding sign, a barrow, the cleaner's trolley and the cafe tables dress the aisles. The entrance arch and its gates stand at the open end. Floor, walls, columns, roof and stalls are all the pack's own modules.","status":"published","url":"https://3dassets.dev/assets/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","thumbnailUrl":"https://cdn.3dassets.dev/assets/34887/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34887/v1/poster.webp","blurhash":"UBC$+Z?G8_X84:IU%2x[00IoS#WB~B-:R*V@","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5162824,"triangles":131638,"vertices":285969,"meshes":217,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-6.363937876525159,-0.000025177397788667816,-8.363937876525158],"max":[6.363937876525159,6.3901101289038635,8.38010979702625]},"sizeMeters":[12.728,6.39,16.744],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":2,"publishedAt":"2026-09-11T10:19:45.701Z","updatedAt":"2026-09-11T10:24:14.157Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34887/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CoveredMarketHallTradersTradingIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34887/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34887/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34887/v1/model.glb\" alt=\"Covered market hall, traders trading (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/34887/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/34887/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"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":"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":"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":"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":"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":"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":"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":"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":"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);"}},{"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"34887","slug":"indoor-market-hall-and-traders-covered-m-3aaa6199-starter-scene","title":"Covered market hall, traders trading (Indoor Market Hall and Traders)","summary":"A Victorian covered market hall in one place: three roof bays of iron truss and glazed rooflight on two rows of cast iron columns, over a 12 m by 16 m paved floor inside a brick shell with clerestory windows and a service door. A row of lock up units runs down the left wall,...","description":"A Victorian covered market hall in one place: three roof bays of iron truss and glazed rooflight on two rows of cast iron columns, over a 12 m by 16 m paved floor inside a brick shell with clerestory windows and a service door. A row of lock up units runs down the left wall, two shuttered and two trading with hardware, bags and homeware over their counters under striped awnings. Three rows of open stalls fill the middle aisle: the greengrocer with a display slope and crates, the baker and the deli with trays, jars and truckles, the florist with tiered buckets, the draper with bolts and a stock rail, and a corner unit of second hand books and records. Blank hanging signs are hung off the frame, the hall clock is bracketed off the back wall, and benches, bins, a wayfinding sign, a barrow, the cleaner's trolley and the cafe tables dress the aisles. The entrance arch and its gates stand at the open end. Floor, walls, columns, roof and stalls are all the pack's own modules.","status":"published","url":"https://3dassets.dev/assets/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","thumbnailUrl":"https://cdn.3dassets.dev/assets/34887/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34887/v1/poster.webp","blurhash":"UBC$+Z?G8_X84:IU%2x[00IoS#WB~B-:R*V@","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5162824,"triangles":131638,"vertices":285969,"meshes":217,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-6.363937876525159,-0.000025177397788667816,-8.363937876525158],"max":[6.363937876525159,6.3901101289038635,8.38010979702625]},"sizeMeters":[12.728,6.39,16.744],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":2,"publishedAt":"2026-09-11T10:19:45.701Z","updatedAt":"2026-09-11T10:24:14.157Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34887/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CoveredMarketHallTradersTradingIndoorMarketHallAndTraders(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34887/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34887/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34887/v1/model.glb\" alt=\"Covered market hall, traders trading (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/34887/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/34887/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"indoor-market-hall-and-traders","title":"Indoor Market Hall and Traders","url":"https://3dassets.dev/demos/indoor-market-hall-and-traders"}}}