{"data":{"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);"}}}