{"data":{"id":24,"slug":"tabletop-game-components","title":"Tabletop Game Components","summary":"46 distinct dice, tokens, routes, markers and storage components.","description":"A crafted tabletop component library with original geometric symbols, useful open containers and two example layouts. No branded rules or gameplay.","url":"https://3dassets.dev/packs/tabletop-game-components","coverUrl":"https://cdn.3dassets.dev/assets/1322/v1/poster.webp","assetCount":48,"aiGenerated":true,"aiGeneratedAssetCount":48,"aiModels":["GPT-6 via Codex"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":924548,"totalTriangles":19246,"starterScene":{"id":"1322","slug":"tabletop-game-components-route-planning--4bbfa292-starter-scene","title":"Canal route planning layout (Tabletop Game Components)","summary":"Composed example for Tabletop Game Components.","description":"Connected canal tiles and bridge crossing with ownership tokens, dice and a score track.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-route-planning--4bbfa292-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/1322/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-route-planning--4bbfa292-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/1322/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1322/v1/poster.webp","blurhash":"U76I?6Xm4Ti{oxo}WEeT00nO.lW=RQVEs.X-","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":118576,"triangles":2328,"vertices":6984,"meshes":76,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.30000001192092896,0.000011200301183771988,-0.20001221535156147],"max":[0.30000001192092896,0.03849999845027924,0.20001221535156147]},"sizeMeters":[0.6,0.038,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:40.648Z","updatedAt":"2026-09-06T04:20:26.922Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1322/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CanalRoutePlanningLayoutTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1322/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1322/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1322/v1/model.glb\" alt=\"Canal route planning layout (Tabletop Game Components)\" 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/1322/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/1322/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"1275","slug":"tabletop-game-components-d2-coin-f9bff268","title":"D2 toss coin (Tabletop Game Components)","summary":"28 mm coin with one raised top pip and two underside pips.","description":"28 mm coin with one raised top pip and two underside pips. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d2-coin-f9bff268","cdnUrl":"https://cdn.3dassets.dev/assets/1275/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d2-coin-f9bff268","thumbnailUrl":"https://cdn.3dassets.dev/assets/1275/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1275/v1/poster.webp","blurhash":"UGDc25xt02Rkxsf6R+j[00Rk~UoeE3j[t6WC","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":11344,"triangles":328,"vertices":984,"meshes":4,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.014000000432133675,3.1257663129060156e-8,-0.014000000432133675],"max":[0.014000000432133675,0.003699968666729488,0.014000000432133675]},"sizeMeters":[0.028,0.004,0.028],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:29.473Z","updatedAt":"2026-09-06T04:20:26.305Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1275/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D2TossCoinTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1275/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1275/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1275/v1/model.glb\" alt=\"D2 toss coin (Tabletop Game Components)\" 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/1275/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/1275/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1276","slug":"tabletop-game-components-d4-tetrahedron-8c1db7d3","title":"D4 tetrahedral die (Tabletop Game Components)","summary":"Faceted 4-face die with one ordinal pip array per face, values 1–4; raised geometry markings.","description":"Faceted 4-face die with one ordinal pip array per face, values 1–4; raised geometry markings. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d4-tetrahedron-8c1db7d3","cdnUrl":"https://cdn.3dassets.dev/assets/1276/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d4-tetrahedron-8c1db7d3","thumbnailUrl":"https://cdn.3dassets.dev/assets/1276/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1276/v1/poster.webp","blurhash":"U6FFjO?b00D%a|of00D%00IU_2kC~pay~p%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":7748,"triangles":84,"vertices":252,"meshes":5,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.010392304509878159,0,-0.010392304509878159],"max":[0.010392304509878159,0.020784609019756317,0.010392304509878159]},"sizeMeters":[0.021,0.021,0.021],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:29.798Z","updatedAt":"2026-09-06T04:20:26.317Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1276/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D4TetrahedralDieTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1276/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1276/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1276/v1/model.glb\" alt=\"D4 tetrahedral die (Tabletop Game Components)\" 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/1276/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/1276/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1277","slug":"tabletop-game-components-d6-cube-c37cfb2b","title":"D6 cubic die (Tabletop Game Components)","summary":"Faceted 6-face die with one ordinal pip array per face, values 1–6; raised geometry markings.","description":"Faceted 6-face die with one ordinal pip array per face, values 1–6; raised geometry markings. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d6-cube-c37cfb2b","cdnUrl":"https://cdn.3dassets.dev/assets/1277/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d6-cube-c37cfb2b","thumbnailUrl":"https://cdn.3dassets.dev/assets/1277/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1277/v1/poster.webp","blurhash":"UFK-g^~q00t7_3WVRjt700D%9FM|oIj[WBV@","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":13248,"triangles":180,"vertices":540,"meshes":7,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.012040000408887863,0,-0.012040000408887863],"max":[0.012040000408887863,0.024080000817775726,0.012040000408887863]},"sizeMeters":[0.024,0.024,0.024],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:29.936Z","updatedAt":"2026-09-06T04:20:26.343Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1277/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D6CubicDieTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1277/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1277/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1277/v1/model.glb\" alt=\"D6 cubic die (Tabletop Game Components)\" 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/1277/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/1277/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1278","slug":"tabletop-game-components-d8-octahedron-d5433253","title":"D8 octahedral die (Tabletop Game Components)","summary":"Faceted 8-face die with one ordinal pip array per face, values 1–8; raised geometry markings.","description":"Faceted 8-face die with one ordinal pip array per face, values 1–8; raised geometry markings. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d8-octahedron-d5433253","cdnUrl":"https://cdn.3dassets.dev/assets/1278/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d8-octahedron-d5433253","thumbnailUrl":"https://cdn.3dassets.dev/assets/1278/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1278/v1/poster.webp","blurhash":"UGBz2wxt00M{-poLIVWB00Rj~pt79GWB%Ms:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":20408,"triangles":296,"vertices":888,"meshes":9,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.01899999938905239,0,-0.01899999938905239],"max":[0.01899999938905239,0.03799999877810478,0.01899999938905239]},"sizeMeters":[0.038,0.038,0.038],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:30.172Z","updatedAt":"2026-09-06T04:20:26.339Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1278/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D8OctahedralDieTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1278/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1278/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1278/v1/model.glb\" alt=\"D8 octahedral die (Tabletop Game Components)\" 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/1278/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/1278/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1279","slug":"tabletop-game-components-d10-bipyramid-e7a3f680","title":"D10 bipyramid die (Tabletop Game Components)","summary":"Faceted 10-face die with one ordinal pip array per face, values 1–10; raised geometry markings.","description":"Faceted 10-face die with one ordinal pip array per face, values 1–10; raised geometry markings. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d10-bipyramid-e7a3f680","cdnUrl":"https://cdn.3dassets.dev/assets/1279/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d10-bipyramid-e7a3f680","thumbnailUrl":"https://cdn.3dassets.dev/assets/1279/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1279/v1/poster.webp","blurhash":"UEBph9-:009Z?bt7D%Rj00In~pxu4oRj-;t8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":29056,"triangles":450,"vertices":1350,"meshes":11,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.012136156752634632,0,-0.014266792490951499],"max":[0.015000901266861546,0.03999999910593033,0.014266792490951499]},"sizeMeters":[0.027,0.04,0.029],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:30.948Z","updatedAt":"2026-09-06T04:20:26.351Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1279/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D10BipyramidDieTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1279/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1279/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1279/v1/model.glb\" alt=\"D10 bipyramid die (Tabletop Game Components)\" 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/1279/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/1279/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1281","slug":"tabletop-game-components-d12-dodecahedron-2201aee4","title":"D12 dodecahedral die (Tabletop Game Components)","summary":"Faceted 12-face die with one ordinal pip array per face, values 1–12; raised geometry markings.","description":"Faceted 12-face die with one ordinal pip array per face, values 1–12; raised geometry markings. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d12-dodecahedron-2201aee4","cdnUrl":"https://cdn.3dassets.dev/assets/1281/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d12-dodecahedron-2201aee4","thumbnailUrl":"https://cdn.3dassets.dev/assets/1281/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1281/v1/poster.webp","blurhash":"UFEo-{%M00IU_2t7IURj00M{~pof4nWBxuWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":40516,"triangles":660,"vertices":1980,"meshes":13,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.017749274149537086,0,-0.017749274149537086],"max":[0.017749274149537086,0.03549854829907417,0.017749274149537086]},"sizeMeters":[0.035,0.035,0.035],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.064Z","updatedAt":"2026-09-06T04:20:26.359Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1281/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D12DodecahedralDieTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1281/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1281/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1281/v1/model.glb\" alt=\"D12 dodecahedral die (Tabletop Game Components)\" 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/1281/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/1281/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1280","slug":"tabletop-game-components-d20-icosahedron-4db6f763","title":"D20 icosahedral die (Tabletop Game Components)","summary":"Faceted 20-face die with one ordinal pip array per face, values 1–20; raised geometry markings.","description":"Faceted 20-face die with one ordinal pip array per face, values 1–20; raised geometry markings. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-d20-icosahedron-4db6f763","cdnUrl":"https://cdn.3dassets.dev/assets/1280/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-d20-icosahedron-4db6f763","thumbnailUrl":"https://cdn.3dassets.dev/assets/1280/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1280/v1/poster.webp","blurhash":"UCE{e1-p00E0~WofD%ay00Io~qxu4nRjx]WB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":95336,"triangles":1700,"vertices":5100,"meshes":21,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.01701301708817482,0,-0.01701301708817482],"max":[0.01701301708817482,0.03402603417634964,0.01701301708817482]},"sizeMeters":[0.034,0.034,0.034],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.085Z","updatedAt":"2026-09-06T04:20:26.382Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1280/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function D20IcosahedralDieTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1280/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1280/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1280/v1/model.glb\" alt=\"D20 icosahedral die (Tabletop Game Components)\" 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/1280/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/1280/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1282","slug":"tabletop-game-components-worker-meeple-45173b9f","title":"Worker meeple (Tabletop Game Components)","summary":"36 mm broad shouldered worker silhouette with head, splayed legs and arms.","description":"36 mm broad shouldered worker silhouette with head, splayed legs and arms. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-worker-meeple-45173b9f","cdnUrl":"https://cdn.3dassets.dev/assets/1282/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-worker-meeple-45173b9f","thumbnailUrl":"https://cdn.3dassets.dev/assets/1282/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1282/v1/poster.webp","blurhash":"U34XC?uO00Qmtlt,R*QmL#Q-l.yrUveTV@WV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":4548,"triangles":72,"vertices":216,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.016000426570349488,0,-0.007999145499570065],"max":[0.016000426570349488,0.035999998450279236,-8.548804095427978e-7]},"sizeMeters":[0.032,0.036,0.008],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.379Z","updatedAt":"2026-09-06T04:20:26.396Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1282/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WorkerMeepleTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1282/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1282/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1282/v1/model.glb\" alt=\"Worker meeple (Tabletop Game Components)\" 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/1282/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/1282/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1283","slug":"tabletop-game-components-soldier-pawn-e939f660","title":"Helmeted soldier pawn (Tabletop Game Components)","summary":"30 mm pawn with a helmet brim and side baton.","description":"30 mm pawn with a helmet brim and side baton. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-soldier-pawn-e939f660","cdnUrl":"https://cdn.3dassets.dev/assets/1283/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-soldier-pawn-e939f660","thumbnailUrl":"https://cdn.3dassets.dev/assets/1283/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1283/v1/poster.webp","blurhash":"UAC=h@$+00I.0$R*]hsA0#X5^OnS}BjGKioz","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":23836,"triangles":468,"vertices":1404,"meshes":5,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.010999999940395355,5.494389997023376e-7,-0.010999999940395355],"max":[0.010999999940395355,0.029999999329447746,0.010999999940395355]},"sizeMeters":[0.022,0.03,0.022],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.509Z","updatedAt":"2026-09-06T04:20:26.399Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1283/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HelmetedSoldierPawnTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1283/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1283/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1283/v1/model.glb\" alt=\"Helmeted soldier pawn (Tabletop Game Components)\" 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/1283/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/1283/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1284","slug":"tabletop-game-components-house-token-fde6a5c0","title":"House ownership token (Tabletop Game Components)","summary":"29 mm gabled house with contrasting roof and front door.","description":"29 mm gabled house with contrasting roof and front door. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-house-token-fde6a5c0","cdnUrl":"https://cdn.3dassets.dev/assets/1284/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-house-token-fde6a5c0","thumbnailUrl":"https://cdn.3dassets.dev/assets/1284/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1284/v1/poster.webp","blurhash":"UCHKa}xu00xZD4IoyX$$00Io#Rs;Lzxuv$SN","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3632,"triangles":32,"vertices":96,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.014000000432133675,0,-0.012499466311901323],"max":[0.014000000432133675,0.028999145711611926,0.012499466311901323]},"sizeMeters":[0.028,0.029,0.025],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.721Z","updatedAt":"2026-09-06T04:20:26.416Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1284/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HouseOwnershipTokenTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1284/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1284/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1284/v1/model.glb\" alt=\"House ownership token (Tabletop Game Components)\" 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/1284/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/1284/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1286","slug":"tabletop-game-components-outpost-tower-daf70e10","title":"Outpost tower token (Tabletop Game Components)","summary":"30 mm round watchtower with four battlements and a recessed crown.","description":"30 mm round watchtower with four battlements and a recessed crown. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-outpost-tower-daf70e10","cdnUrl":"https://cdn.3dassets.dev/assets/1286/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-outpost-tower-daf70e10","thumbnailUrl":"https://cdn.3dassets.dev/assets/1286/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1286/v1/poster.webp","blurhash":"UME.^Uxu00IV~poLD*bb9GWB-:t7M{ayRjWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":10688,"triangles":240,"vertices":720,"meshes":6,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.012000000104308128,4.273367465923092e-7,-0.012000000104308128],"max":[0.012000000104308128,0.02999999956227839,0.012000000104308128]},"sizeMeters":[0.024,0.03,0.024],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.861Z","updatedAt":"2026-09-06T04:20:26.435Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1286/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OutpostTowerTokenTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1286/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1286/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1286/v1/model.glb\" alt=\"Outpost tower token (Tabletop Game Components)\" 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/1286/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/1286/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1285","slug":"tabletop-game-components-resource-cube-a999c27e","title":"Resource crate cube (Tabletop Game Components)","summary":"18 mm resource crate with two raised binding bands.","description":"18 mm resource crate with two raised binding bands. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-resource-cube-a999c27e","cdnUrl":"https://cdn.3dassets.dev/assets/1285/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-resource-cube-a999c27e","thumbnailUrl":"https://cdn.3dassets.dev/assets/1285/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1285/v1/poster.webp","blurhash":"UBHw;^~U03M}^#WCSdt603E2E2kBawoeNLRk","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":2796,"triangles":36,"vertices":108,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.009999999776482582,0,-0.009999999776482582],"max":[0.009999999776482582,0.017999999225139618,0.009999999776482582]},"sizeMeters":[0.02,0.018,0.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:31.764Z","updatedAt":"2026-09-06T04:20:26.445Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1285/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ResourceCrateCubeTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1285/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1285/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1285/v1/model.glb\" alt=\"Resource crate cube (Tabletop Game Components)\" 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/1285/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/1285/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1287","slug":"tabletop-game-components-barrel-token-386b7ca8","title":"Barrel supply token (Tabletop Game Components)","summary":"24 mm bulged wooden barrel with two dark hoops.","description":"24 mm bulged wooden barrel with two dark hoops. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-barrel-token-386b7ca8","cdnUrl":"https://cdn.3dassets.dev/assets/1287/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-barrel-token-386b7ca8","thumbnailUrl":"https://cdn.3dassets.dev/assets/1287/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1287/v1/poster.webp","blurhash":"U8CP65={009b~AkB9bn%0MIp-UtQIpayoya#","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":16440,"triangles":384,"vertices":1152,"meshes":4,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.012000000104308128,-9.155552922381766e-7,-0.012000000104308128],"max":[0.012000000104308128,0.024000915763908497,0.012000000104308128]},"sizeMeters":[0.024,0.024,0.024],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:32.635Z","updatedAt":"2026-09-06T04:20:26.448Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1287/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BarrelSupplyTokenTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1287/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1287/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1287/v1/model.glb\" alt=\"Barrel supply token (Tabletop Game Components)\" 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/1287/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/1287/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1288","slug":"tabletop-game-components-treasure-chest-08836cb8","title":"Treasure chest token (Tabletop Game Components)","summary":"29 mm treasure chest with rounded lid, binding bands and latch.","description":"29 mm treasure chest with rounded lid, binding bands and latch. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-treasure-chest-08836cb8","cdnUrl":"https://cdn.3dassets.dev/assets/1288/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-treasure-chest-08836cb8","thumbnailUrl":"https://cdn.3dassets.dev/assets/1288/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1288/v1/poster.webp","blurhash":"UEHw*#~T04ICxZ%1WVNJ03E3NLS1IVt6s.Ip","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":6532,"triangles":96,"vertices":288,"meshes":5,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.014499999582767487,0,-0.009999603205192921],"max":[0.014499999582767487,0.023500869004946905,0.010999877866337441]},"sizeMeters":[0.029,0.024,0.021],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:32.715Z","updatedAt":"2026-09-06T04:20:26.455Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1288/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TreasureChestTokenTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1288/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1288/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1288/v1/model.glb\" alt=\"Treasure chest token (Tabletop Game Components)\" 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/1288/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/1288/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1289","slug":"tabletop-game-components-flag-token-0e8c4afb","title":"Claim flag token (Tabletop Game Components)","summary":"36 mm claim flag on a stable circular foot; flag faces +Z.","description":"36 mm claim flag on a stable circular foot; flag faces +Z. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-flag-token-0e8c4afb","cdnUrl":"https://cdn.3dassets.dev/assets/1289/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-flag-token-0e8c4afb","thumbnailUrl":"https://cdn.3dassets.dev/assets/1289/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1289/v1/poster.webp","blurhash":"UAA9==cE00Qn^NS25Sr?0Mrs~ATJ0~sB^OOX","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":9860,"triangles":204,"vertices":612,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.012000000104308128,-4.5777764611995564e-8,-0.012000000104308128],"max":[0.017999999225139618,0.035999998450279236,0.012000000104308128]},"sizeMeters":[0.03,0.036,0.024],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:32.848Z","updatedAt":"2026-09-06T04:20:26.480Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1289/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClaimFlagTokenTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1289/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1289/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1289/v1/model.glb\" alt=\"Claim flag token (Tabletop Game Components)\" 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/1289/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/1289/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1290","slug":"tabletop-game-components-hex-island-a3e3029b","title":"Hex island tile (Tabletop Game Components)","summary":"60 mm across-flats hex water tile with a raised irregular island.","description":"60 mm across-flats hex water tile with a raised irregular island. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-hex-island-a3e3029b","cdnUrl":"https://cdn.3dassets.dev/assets/1290/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-hex-island-a3e3029b","thumbnailUrl":"https://cdn.3dassets.dev/assets/1290/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1290/v1/poster.webp","blurhash":"UA8qsUx[4TNGJBWCsSoe00RQ?]s:=Xt6OYWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":14244,"triangles":244,"vertices":732,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.03463999927043915,-1.487932057525447e-7,-0.030001176161863846],"max":[0.03463999927043915,0.01600000075995922,0.030001176161863846]},"sizeMeters":[0.069,0.016,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:33.288Z","updatedAt":"2026-09-06T04:20:26.502Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1290/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HexIslandTileTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1290/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1290/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1290/v1/model.glb\" alt=\"Hex island tile (Tabletop Game Components)\" 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/1290/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/1290/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1291","slug":"tabletop-game-components-canal-straight-c6d1b419","title":"Straight canal tile (Tabletop Game Components)","summary":"60 mm route tile with visible edge connections and solid underside. straight topology.","description":"60 mm route tile with visible edge connections and solid underside. straight topology. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-canal-straight-c6d1b419","cdnUrl":"https://cdn.3dassets.dev/assets/1291/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-canal-straight-c6d1b419","thumbnailUrl":"https://cdn.3dassets.dev/assets/1291/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1291/v1/poster.webp","blurhash":"U6BDl_-.00RlyrnkVYX800IV*IS2HXX7TKv~","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3432,"triangles":36,"vertices":108,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.005701573213482104,0.029999999329447746]},"sizeMeters":[0.06,0.006,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:33.496Z","updatedAt":"2026-09-06T04:20:26.506Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1291/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StraightCanalTileTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1291/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1291/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1291/v1/model.glb\" alt=\"Straight canal tile (Tabletop Game Components)\" 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/1291/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/1291/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1292","slug":"tabletop-game-components-canal-elbow-ab9c2db4","title":"Right angle canal tile (Tabletop Game Components)","summary":"60 mm route tile with visible edge connections and solid underside. elbow topology.","description":"60 mm route tile with visible edge connections and solid underside. elbow topology. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-canal-elbow-ab9c2db4","cdnUrl":"https://cdn.3dassets.dev/assets/1292/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-canal-elbow-ab9c2db4","thumbnailUrl":"https://cdn.3dassets.dev/assets/1292/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1292/v1/poster.webp","blurhash":"U6BN7i^$009xyrjHVYbb009b*I-PHXg1TKn5","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":4216,"triangles":48,"vertices":144,"meshes":4,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.005700230404245345,0.029999999329447746]},"sizeMeters":[0.06,0.006,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:33.920Z","updatedAt":"2026-09-06T04:20:26.518Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1292/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RightAngleCanalTileTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1292/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1292/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1292/v1/model.glb\" alt=\"Right angle canal tile (Tabletop Game Components)\" 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/1292/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/1292/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1293","slug":"tabletop-game-components-canal-junction-7d9a891f","title":"Three way canal tile (Tabletop Game Components)","summary":"60 mm route tile with visible edge connections and solid underside. junction topology.","description":"60 mm route tile with visible edge connections and solid underside. junction topology. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-canal-junction-7d9a891f","cdnUrl":"https://cdn.3dassets.dev/assets/1293/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-canal-junction-7d9a891f","thumbnailUrl":"https://cdn.3dassets.dev/assets/1293/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1293/v1/poster.webp","blurhash":"U5A^gu?Y00EO*JjHR4X800D+uit2D4XQTdrr","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":4224,"triangles":48,"vertices":144,"meshes":4,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.005701573213482104,0.029999999329447746]},"sizeMeters":[0.06,0.006,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:34.145Z","updatedAt":"2026-09-06T04:20:26.540Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1293/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreeWayCanalTileTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1293/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1293/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1293/v1/model.glb\" alt=\"Three way canal tile (Tabletop Game Components)\" 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/1293/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/1293/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1294","slug":"tabletop-game-components-crossroads-1e0576ba","title":"Crossroads route tile (Tabletop Game Components)","summary":"60 mm route tile with visible edge connections and solid underside. cross topology.","description":"60 mm route tile with visible edge connections and solid underside. cross topology. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-crossroads-1e0576ba","cdnUrl":"https://cdn.3dassets.dev/assets/1294/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-crossroads-1e0576ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/1294/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1294/v1/poster.webp","blurhash":"UAD07D%L00Rk.8a#Mxod00M|_MbH4Tobx]Rl","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":4164,"triangles":48,"vertices":144,"meshes":4,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.005701573213482104,0.029999999329447746]},"sizeMeters":[0.06,0.006,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:34.323Z","updatedAt":"2026-09-06T04:20:26.546Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1294/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CrossroadsRouteTileTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1294/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1294/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1294/v1/model.glb\" alt=\"Crossroads route tile (Tabletop Game Components)\" 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/1294/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/1294/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1295","slug":"tabletop-game-components-arched-bridge-a53096d7","title":"Bridge over canal tile (Tabletop Game Components)","summary":"60 mm canal crossing with raised bridge deck, two abutments and clear water passage.","description":"60 mm canal crossing with raised bridge deck, two abutments and clear water passage. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-arched-bridge-a53096d7","cdnUrl":"https://cdn.3dassets.dev/assets/1295/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-arched-bridge-a53096d7","thumbnailUrl":"https://cdn.3dassets.dev/assets/1295/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1295/v1/poster.webp","blurhash":"U7CZFN-:00RQIVe;NaNa00M{~VNdt*W;^Q-T","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":6748,"triangles":108,"vertices":324,"meshes":9,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.023999572576964112,0.029999999329447746]},"sizeMeters":[0.06,0.024,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:34.256Z","updatedAt":"2026-09-06T04:20:26.556Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1295/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BridgeOverCanalTileTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1295/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1295/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1295/v1/model.glb\" alt=\"Bridge over canal tile (Tabletop Game Components)\" 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/1295/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/1295/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1296","slug":"tabletop-game-components-corridor-corner-4520e398","title":"Walled corridor corner (Tabletop Game Components)","summary":"60 mm route tile with visible edge connections and solid underside. corner topology.","description":"60 mm route tile with visible edge connections and solid underside. corner topology. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-corridor-corner-4520e398","cdnUrl":"https://cdn.3dassets.dev/assets/1296/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-corridor-corner-4520e398","thumbnailUrl":"https://cdn.3dassets.dev/assets/1296/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1296/v1/poster.webp","blurhash":"U9C?Jr$%00kWIURkkXt600Na~VRQ?vxam+Rj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":5844,"triangles":72,"vertices":216,"meshes":6,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.01699911549305784,0.029999999329447746]},"sizeMeters":[0.06,0.017,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:34.453Z","updatedAt":"2026-09-06T04:20:26.554Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1296/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WalledCorridorCornerTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1296/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1296/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1296/v1/model.glb\" alt=\"Walled corridor corner (Tabletop Game Components)\" 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/1296/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/1296/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1300","slug":"tabletop-game-components-corridor-dead-end-4db7a3bc","title":"Walled corridor dead end (Tabletop Game Components)","summary":"60 mm route tile with visible edge connections and solid underside. end topology.","description":"60 mm route tile with visible edge connections and solid underside. end topology. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-corridor-dead-end-4db7a3bc","cdnUrl":"https://cdn.3dassets.dev/assets/1300/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-corridor-dead-end-4db7a3bc","thumbnailUrl":"https://cdn.3dassets.dev/assets/1300/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1300/v1/poster.webp","blurhash":"U5CF@U=y01O?E1NGSPxa00Ef}?n5?u%2+[I:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":5892,"triangles":72,"vertices":216,"meshes":6,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.029999999329447746,4.2739882150002323e-7,-0.029999999329447746],"max":[0.029999999329447746,0.01699935943647427,0.029999999329447746]},"sizeMeters":[0.06,0.017,0.06],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:35.347Z","updatedAt":"2026-09-06T04:20:26.575Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1300/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WalledCorridorDeadEndTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1300/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1300/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1300/v1/model.glb\" alt=\"Walled corridor dead end (Tabletop Game Components)\" 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/1300/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/1300/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1297","slug":"tabletop-game-components-card-rail-20153d14","title":"Long card display rail (Tabletop Game Components)","summary":"180 mm card rail with 11 mm channel and a tall backrest.","description":"180 mm card rail with 11 mm channel and a tall backrest. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-card-rail-20153d14","cdnUrl":"https://cdn.3dassets.dev/assets/1297/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-card-rail-20153d14","thumbnailUrl":"https://cdn.3dassets.dev/assets/1297/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1297/v1/poster.webp","blurhash":"U8CPCFxt4=xZxr~AoKIq00WT^iNGIX03S2=_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3184,"triangles":36,"vertices":108,"meshes":3,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.09000000357627869,6.407955922046321e-7,-0.012997223332100917],"max":[0.09000000357627869,0.025997864395914026,0.012997223332100917]},"sizeMeters":[0.18,0.026,0.026],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:35.110Z","updatedAt":"2026-09-06T04:20:26.597Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1297/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LongCardDisplayRailTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1297/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1297/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1297/v1/model.glb\" alt=\"Long card display rail (Tabletop Game Components)\" 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/1297/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/1297/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1298","slug":"tabletop-game-components-card-stand-3a4ce5dd","title":"Single upright card stand (Tabletop Game Components)","summary":"35 mm single card support with 6 mm open slot.","description":"35 mm single card support with 6 mm open slot. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-card-stand-3a4ce5dd","cdnUrl":"https://cdn.3dassets.dev/assets/1298/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-card-stand-3a4ce5dd","thumbnailUrl":"https://cdn.3dassets.dev/assets/1298/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1298/v1/poster.webp","blurhash":"U5F#X6~T00NGn4={I[EN009b,:E4RiSz%LE1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3212,"triangles":36,"vertices":108,"meshes":3,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.017500000074505806,4.2734561443626834e-7,-0.012500534127136536],"max":[0.017500000074505806,0.01699914606633552,0.012500534127136536]},"sizeMeters":[0.035,0.017,0.025],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:35.121Z","updatedAt":"2026-09-06T04:20:26.606Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1298/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SingleUprightCardStandTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1298/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1298/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1298/v1/model.glb\" alt=\"Single upright card stand (Tabletop Game Components)\" 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/1298/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/1298/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1299","slug":"tabletop-game-components-miniature-slot-base-1261435f","title":"Miniature standee slot base (Tabletop Game Components)","summary":"30 mm round standee foot with 3 mm open gripping slot.","description":"30 mm round standee foot with 3 mm open gripping slot. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-miniature-slot-base-1261435f","cdnUrl":"https://cdn.3dassets.dev/assets/1299/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-miniature-slot-base-1261435f","thumbnailUrl":"https://cdn.3dassets.dev/assets/1299/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1299/v1/poster.webp","blurhash":"U13c35%P00ImM}Vsxso#00R#.Tn}iupcXTR4","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":7184,"triangles":120,"vertices":360,"meshes":3,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.014999999664723873,4.2739882150002323e-7,-0.014999999664723873],"max":[0.014999999664723873,0.009999969509429746,0.014999999664723873]},"sizeMeters":[0.03,0.01,0.03],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:35.360Z","updatedAt":"2026-09-06T04:20:26.616Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1299/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MiniatureStandeeSlotBaseTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1299/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1299/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1299/v1/model.glb\" alt=\"Miniature standee slot base (Tabletop Game Components)\" 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/1299/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/1299/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1301","slug":"tabletop-game-components-dice-tray-c2cdba66","title":"Felt rolling tray (Tabletop Game Components)","summary":"160 by 130 mm open dice tray with lined floor and retaining walls.","description":"160 by 130 mm open dice tray with lined floor and retaining walls. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-dice-tray-c2cdba66","cdnUrl":"https://cdn.3dassets.dev/assets/1301/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-dice-tray-c2cdba66","thumbnailUrl":"https://cdn.3dassets.dev/assets/1301/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1301/v1/poster.webp","blurhash":"U5BWPL?G4Ts+-:s;V@xV00IoHDI;DiRiOE9#","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":4596,"triangles":72,"vertices":216,"meshes":6,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.08000311079451053,-0.000003952100322675506,-0.06500201332751072],"max":[0.08000311079451053,0.023000671554975687,0.06500201332751072]},"sizeMeters":[0.16,0.023,0.13],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:35.880Z","updatedAt":"2026-09-06T04:20:26.639Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1301/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FeltRollingTrayTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1301/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1301/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1301/v1/model.glb\" alt=\"Felt rolling tray (Tabletop Game Components)\" 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/1301/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/1301/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1302","slug":"tabletop-game-components-token-bowl-49f6580e","title":"Open token bowl (Tabletop Game Components)","summary":"56 mm open bowl with thick circular rim and lined bottom.","description":"56 mm open bowl with thick circular rim and lined bottom. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-token-bowl-49f6580e","cdnUrl":"https://cdn.3dassets.dev/assets/1302/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-token-bowl-49f6580e","thumbnailUrl":"https://cdn.3dassets.dev/assets/1302/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1302/v1/poster.webp","blurhash":"U6CPIc-o01WE%2RkWFxs00Io~Uj?IU%1X4E3","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":21440,"triangles":448,"vertices":1344,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.02800000086426735,3.204184877384376e-7,-0.02800000086426735],"max":[0.02800000086426735,0.019998718307711938,0.02800000086426735]},"sizeMeters":[0.056,0.02,0.056],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:35.825Z","updatedAt":"2026-09-06T04:20:26.663Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1302/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenTokenBowlTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1302/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1302/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1302/v1/model.glb\" alt=\"Open token bowl (Tabletop Game Components)\" 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/1302/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/1302/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1303","slug":"tabletop-game-components-three-compartment-tray-a10385b1","title":"Three compartment sorting tray (Tabletop Game Components)","summary":"150 mm open sorting tray with three physically divided bins.","description":"150 mm open sorting tray with three physically divided bins. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-three-compartment-tray-a10385b1","cdnUrl":"https://cdn.3dassets.dev/assets/1303/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-three-compartment-tray-a10385b1","thumbnailUrl":"https://cdn.3dassets.dev/assets/1303/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1303/v1/poster.webp","blurhash":"U5CY,I?Y02r??Y~As:D+00NG-:M}9I0MIqXm","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":5868,"triangles":96,"vertices":288,"meshes":8,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.07500049094960426,-0.0000015107128452189738,-0.03249591001044471],"max":[0.07500049094960426,0.021001327431346015,0.03249591001044471]},"sizeMeters":[0.15,0.021,0.065],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:36.647Z","updatedAt":"2026-09-06T04:20:26.669Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1303/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreeCompartmentSortingTrayTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1303/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1303/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1303/v1/model.glb\" alt=\"Three compartment sorting tray (Tabletop Game Components)\" 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/1303/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/1303/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1305","slug":"tabletop-game-components-dice-tower-771a37b9","title":"Open chute dice tower (Tabletop Game Components)","summary":"103 mm open front dice tower with two alternating baffles and an exit catch tray.","description":"103 mm open front dice tower with two alternating baffles and an exit catch tray. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-dice-tower-771a37b9","cdnUrl":"https://cdn.3dassets.dev/assets/1305/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-dice-tower-771a37b9","thumbnailUrl":"https://cdn.3dassets.dev/assets/1305/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1305/v1/poster.webp","blurhash":"U7Du#a9^00]~vz0M5F^%EM-nj0NH_Lxb#Qe-","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":8824,"triangles":132,"vertices":396,"meshes":11,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.032502669354797654,3.205042102302595e-7,-0.05249999836087227],"max":[0.032502669354797654,0.10300000011920929,0.05249999836087227]},"sizeMeters":[0.065,0.103,0.105],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:37.339Z","updatedAt":"2026-09-06T04:20:26.681Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1305/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenChuteDiceTowerTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1305/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1305/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1305/v1/model.glb\" alt=\"Open chute dice tower (Tabletop Game Components)\" 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/1305/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/1305/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1304","slug":"tabletop-game-components-tile-rack-f4b8fdbe","title":"Stepped tile rack (Tabletop Game Components)","summary":"180 mm rack with two open rows and stepped retaining lips.","description":"180 mm rack with two open rows and stepped retaining lips. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-tile-rack-f4b8fdbe","cdnUrl":"https://cdn.3dassets.dev/assets/1304/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-tile-rack-f4b8fdbe","thumbnailUrl":"https://cdn.3dassets.dev/assets/1304/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1304/v1/poster.webp","blurhash":"U7D8?xt603tPxY^iS2E200Rj~9M|Ir0gs.=x","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3932,"triangles":48,"vertices":144,"meshes":4,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.09000000357627869,4.2727467168459515e-7,-0.03250129832813824],"max":[0.09000000357627869,0.029002823136706466,0.03250129832813824]},"sizeMeters":[0.18,0.029,0.065],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:36.878Z","updatedAt":"2026-09-06T04:20:26.695Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1304/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SteppedTileRackTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1304/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1304/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1304/v1/model.glb\" alt=\"Stepped tile rack (Tabletop Game Components)\" 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/1304/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/1304/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1306","slug":"tabletop-game-components-turn-arrow-53acb557","title":"Turn direction arrow (Tabletop Game Components)","summary":"50 mm solid direction arrow with broad tactile head.","description":"50 mm solid direction arrow with broad tactile head. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-turn-arrow-53acb557","cdnUrl":"https://cdn.3dassets.dev/assets/1306/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-turn-arrow-53acb557","thumbnailUrl":"https://cdn.3dassets.dev/assets/1306/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1306/v1/poster.webp","blurhash":"UDBxyL$*0zWW%1$*jsNG0LW:}@R*9u9[bI-U","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":2212,"triangles":24,"vertices":72,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.02500000037252903,0.0000010376945302260389,-0.014000366430735425],"max":[0.02500000037252903,0.00399896249545958,0.014000366430735425]},"sizeMeters":[0.05,0.004,0.028],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:36.978Z","updatedAt":"2026-09-06T04:20:26.719Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1306/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TurnDirectionArrowTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1306/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1306/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1306/v1/model.glb\" alt=\"Turn direction arrow (Tabletop Game Components)\" 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/1306/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/1306/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1307","slug":"tabletop-game-components-first-player-crown-94b37228","title":"First player crown (Tabletop Game Components)","summary":"30 mm crown marker with five pointed peaks and an open centre.","description":"30 mm crown marker with five pointed peaks and an open centre. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-first-player-crown-94b37228","cdnUrl":"https://cdn.3dassets.dev/assets/1307/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-first-player-crown-94b37228","thumbnailUrl":"https://cdn.3dassets.dev/assets/1307/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1307/v1/poster.webp","blurhash":"UEE{5l%K02RS9aWBxZof00Rk~Taf?Fs;WEWA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":20800,"triangles":392,"vertices":1176,"meshes":7,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.014999999664723873,3.2049090846410395e-7,-0.014999999664723873],"max":[0.015000427456068265,0.017000000923871994,0.014999999664723873]},"sizeMeters":[0.03,0.017,0.03],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:37.299Z","updatedAt":"2026-09-06T04:20:26.715Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1307/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FirstPlayerCrownTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1307/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1307/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1307/v1/model.glb\" alt=\"First player crown (Tabletop Game Components)\" 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/1307/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/1307/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1308","slug":"tabletop-game-components-heart-marker-8c7173a2","title":"Heart health marker (Tabletop Game Components)","summary":"32 mm extruded heart marker with sculpted lobes and a pointed base.","description":"32 mm extruded heart marker with sculpted lobes and a pointed base. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-heart-marker-8c7173a2","cdnUrl":"https://cdn.3dassets.dev/assets/1308/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-heart-marker-8c7173a2","thumbnailUrl":"https://cdn.3dassets.dev/assets/1308/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1308/v1/poster.webp","blurhash":"UDCX.[EM0fR--ojZI:S40L$*}tay57of%2s,","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":7040,"triangles":124,"vertices":372,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.01600000075995922,-6.10370218512811e-8,-0.011804548771045486],"max":[0.01600000075995922,0.004000061227011657,0.017000042580924312]},"sizeMeters":[0.032,0.004,0.029],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:37.362Z","updatedAt":"2026-09-06T04:20:26.729Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1308/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HeartHealthMarkerTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1308/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1308/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1308/v1/model.glb\" alt=\"Heart health marker (Tabletop Game Components)\" 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/1308/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/1308/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1309","slug":"tabletop-game-components-damage-burst-6c71518d","title":"Damage burst marker (Tabletop Game Components)","summary":"38 mm eight pointed impact burst token.","description":"38 mm eight pointed impact burst token. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-damage-burst-6c71518d","cdnUrl":"https://cdn.3dassets.dev/assets/1309/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-damage-burst-6c71518d","thumbnailUrl":"https://cdn.3dassets.dev/assets/1309/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1309/v1/poster.webp","blurhash":"UGBW9vt602R*xtj[Rkay02Rk~ToeE2WCxtkB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3948,"triangles":60,"vertices":180,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-0.01899999938905239,6.7156649205969e-7,-0.01899999938905239],"max":[0.01899999938905239,0.0039993286234977455,0.01899999938905239]},"sizeMeters":[0.038,0.004,0.038],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:37.737Z","updatedAt":"2026-09-06T04:20:26.763Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1309/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DamageBurstMarkerTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1309/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1309/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1309/v1/model.glb\" alt=\"Damage burst marker (Tabletop Game Components)\" 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/1309/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/1309/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1311","slug":"tabletop-game-components-objective-ring-870dac82","title":"Open objective ring (Tabletop Game Components)","summary":"48 mm hollow objective ring with a raised facing tab; accepts a 38 mm base.","description":"48 mm hollow objective ring with a raised facing tab; accepts a 38 mm base. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-objective-ring-870dac82","cdnUrl":"https://cdn.3dassets.dev/assets/1311/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-objective-ring-870dac82","thumbnailUrl":"https://cdn.3dassets.dev/assets/1311/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1311/v1/poster.webp","blurhash":"U54y}+x[D4Elo#WBjYs:00Mz.m-4VXxuW=M|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":14672,"triangles":268,"vertices":804,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.024000000208616257,-4.5777764611995564e-8,-0.024000000208616257],"max":[0.024000000208616257,0.0049997862845542265,0.025499999523162842]},"sizeMeters":[0.048,0.005,0.049],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:38.173Z","updatedAt":"2026-09-06T04:20:26.774Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1311/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenObjectiveRingTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1311/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1311/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1311/v1/model.glb\" alt=\"Open objective ring (Tabletop Game Components)\" 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/1311/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/1311/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1310","slug":"tabletop-game-components-number-dial-23429a95","title":"Ten position counter dial (Tabletop Game Components)","summary":"56 mm ten detent counter with raised tick dots and a named central pointer pivot.","description":"56 mm ten detent counter with raised tick dots and a named central pointer pivot. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-number-dial-23429a95","cdnUrl":"https://cdn.3dassets.dev/assets/1310/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-number-dial-23429a95","thumbnailUrl":"https://cdn.3dassets.dev/assets/1310/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1310/v1/poster.webp","blurhash":"UBBMJHxZ0MWVkCWVWCj[01NH~Ao0V@oet6WC","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":23240,"triangles":1168,"vertices":3504,"meshes":13,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.02800000086426735,-5.341071938355733e-7,-0.02800000086426735],"max":[0.02800000086426735,0.008000152856118917,0.02800000086426735]},"sizeMeters":[0.056,0.008,0.056],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:38.139Z","updatedAt":"2026-09-06T04:20:26.779Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1310/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TenPositionCounterDialTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1310/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1310/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1310/v1/model.glb\" alt=\"Ten position counter dial (Tabletop Game Components)\" 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/1310/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/1310/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1312","slug":"tabletop-game-components-hourglass-84bdf54d","title":"Tabletop hourglass (Tabletop Game Components)","summary":"40 mm hourglass silhouette with four protective pillars and opaque sand-coloured bulbs.","description":"40 mm hourglass silhouette with four protective pillars and opaque sand-coloured bulbs. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-hourglass-84bdf54d","cdnUrl":"https://cdn.3dassets.dev/assets/1312/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-hourglass-84bdf54d","thumbnailUrl":"https://cdn.3dassets.dev/assets/1312/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1312/v1/poster.webp","blurhash":"U6FY0+?H00D%#QadTKt802WAt,S6~qkV4nVt","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":20212,"triangles":768,"vertices":2304,"meshes":8,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.014000000432133675,-5.341071938355733e-7,-0.014000000432133675],"max":[0.014000000432133675,0.04000053391161609,0.014000000432133675]},"sizeMeters":[0.028,0.04,0.028],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:38.470Z","updatedAt":"2026-09-06T04:20:26.795Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1312/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TabletopHourglassTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1312/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1312/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1312/v1/model.glb\" alt=\"Tabletop hourglass (Tabletop Game Components)\" 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/1312/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/1312/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1313","slug":"tabletop-game-components-card-deck-4600f9bd","title":"Blank backed card deck (Tabletop Game Components)","summary":"63 by 88 mm deck with visible page edges and an original geometric back emblem.","description":"63 by 88 mm deck with visible page edges and an original geometric back emblem. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-card-deck-4600f9bd","cdnUrl":"https://cdn.3dassets.dev/assets/1313/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-card-deck-4600f9bd","thumbnailUrl":"https://cdn.3dassets.dev/assets/1313/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1313/v1/poster.webp","blurhash":"U4AnM%?v00nQGuDjrW%g00H?dANd_~_NKPR5","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":5404,"triangles":84,"vertices":252,"meshes":7,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.03159824927961997,-0.000001586750819931003,-0.04410000145435333],"max":[0.03159824927961997,0.00870015097460386,0.04410000145435333]},"sizeMeters":[0.063,0.009,0.088],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:38.499Z","updatedAt":"2026-09-06T04:20:26.818Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1313/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BlankBackedCardDeckTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1313/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1313/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1313/v1/model.glb\" alt=\"Blank backed card deck (Tabletop Game Components)\" 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/1313/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/1313/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1314","slug":"tabletop-game-components-upright-card-f6b8b016","title":"Single upright playing card (Tabletop Game Components)","summary":"63 by 88 mm individual upright card with a solid back, cream border and original diamond emblem.","description":"63 by 88 mm individual upright card with a solid back, cream border and original diamond emblem. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-upright-card-f6b8b016","cdnUrl":"https://cdn.3dassets.dev/assets/1314/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-upright-card-f6b8b016","thumbnailUrl":"https://cdn.3dassets.dev/assets/1314/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1314/v1/poster.webp","blurhash":"U4CHA#PP00;U?[?]IU8wUbwiCPI.-;?IRP00","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":3840,"triangles":36,"vertices":108,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.03149974042198483,0,-0.0004995269603963832],"max":[0.03149974042198483,0.08799999952316284,0.0011001510595032914]},"sizeMeters":[0.063,0.088,0.002],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:38.758Z","updatedAt":"2026-09-06T04:20:26.823Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1314/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SingleUprightPlayingCardTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1314/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1314/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1314/v1/model.glb\" alt=\"Single upright playing card (Tabletop Game Components)\" 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/1314/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/1314/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1315","slug":"tabletop-game-components-draw-bag-0124f67b","title":"Drawstring token bag (Tabletop Game Components)","summary":"Soft faceted token bag with gathered mouth and contrasting drawstring collar.","description":"Soft faceted token bag with gathered mouth and contrasting drawstring collar. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-draw-bag-0124f67b","cdnUrl":"https://cdn.3dassets.dev/assets/1315/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-draw-bag-0124f67b","thumbnailUrl":"https://cdn.3dassets.dev/assets/1315/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1315/v1/poster.webp","blurhash":"U85?uBpc4TQ-?]kq9Ga1Q8VslnozHsa0x[kW","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":31324,"triangles":604,"vertices":1812,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.03500000014901161,-7.473309563132968e-7,-0.02559068585985962],"max":[0.03500000014901161,0.06350106924309998,0.02559068585985962]},"sizeMeters":[0.07,0.064,0.051],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:38.855Z","updatedAt":"2026-09-06T04:20:26.829Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1315/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DrawstringTokenBagTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1315/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1315/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1315/v1/model.glb\" alt=\"Drawstring token bag (Tabletop Game Components)\" 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/1315/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/1315/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1316","slug":"tabletop-game-components-deck-box-4463bd19","title":"Open deck storage box (Tabletop Game Components)","summary":"77 by 102 mm open card box; interior accommodates the included 63 by 88 mm deck.","description":"77 by 102 mm open card box; interior accommodates the included 63 by 88 mm deck. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-deck-box-4463bd19","cdnUrl":"https://cdn.3dassets.dev/assets/1316/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-deck-box-4463bd19","thumbnailUrl":"https://cdn.3dassets.dev/assets/1316/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1316/v1/poster.webp","blurhash":"U7FEoh~A0N$j?Y9cRR-.019bE3NINH-mM}EL","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":4588,"triangles":72,"vertices":216,"meshes":6,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.038502379838733884,-4.119587824610513e-7,-0.05100213500331467],"max":[0.038502379838733884,0.05100274538017696,0.05100213500331467]},"sizeMeters":[0.077,0.051,0.102],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:39.464Z","updatedAt":"2026-09-06T04:20:26.845Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1316/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OpenDeckStorageBoxTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1316/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1316/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1316/v1/model.glb\" alt=\"Open deck storage box (Tabletop Game Components)\" 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/1316/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/1316/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1318","slug":"tabletop-game-components-component-organizer-cf67da29","title":"Six bin component organizer (Tabletop Game Components)","summary":"200 mm six compartment organizer with thick walls and lined floors.","description":"200 mm six compartment organizer with thick walls and lined floors. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-component-organizer-cf67da29","cdnUrl":"https://cdn.3dassets.dev/assets/1318/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-component-organizer-cf67da29","thumbnailUrl":"https://cdn.3dassets.dev/assets/1318/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1318/v1/poster.webp","blurhash":"U4CiNx^j01M|~A=yRkEL00Ip?ZIp0MACI@W?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":6600,"triangles":108,"vertices":324,"meshes":9,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.10000311407276599,-0.0000015106755547982225,-0.06500201340209157],"max":[0.10000311407276599,0.02800038211281084,0.06500201340209157]},"sizeMeters":[0.2,0.028,0.13],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:39.740Z","updatedAt":"2026-09-06T04:20:26.873Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1318/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SixBinComponentOrganizerTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1318/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1318/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1318/v1/model.glb\" alt=\"Six bin component organizer (Tabletop Game Components)\" 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/1318/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/1318/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1317","slug":"tabletop-game-components-player-screen-73fcf994","title":"Three panel player screen (Tabletop Game Components)","summary":"Three solid privacy panels with separate side-panel hinge pivots; 75 mm tall.","description":"Three solid privacy panels with separate side-panel hinge pivots; 75 mm tall. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-player-screen-73fcf994","cdnUrl":"https://cdn.3dassets.dev/assets/1317/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-player-screen-73fcf994","thumbnailUrl":"https://cdn.3dassets.dev/assets/1317/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1317/v1/poster.webp","blurhash":"U74E1Xp_L#u4y?uOaKVsD4iwuOQ-L#Qmo}o}","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":9680,"triangles":228,"vertices":684,"meshes":5,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.11774609034385465,-0.0000014479358784874607,-0.022000487928609043],"max":[0.11774609034385465,0.07500145091611073,0.023580505208663668]},"sizeMeters":[0.235,0.075,0.046],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:39.825Z","updatedAt":"2026-09-06T04:20:26.894Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1317/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThreePanelPlayerScreenTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1317/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1317/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1317/v1/model.glb\" alt=\"Three panel player screen (Tabletop Game Components)\" 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/1317/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/1317/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1319","slug":"tabletop-game-components-score-track-cd4634ed","title":"Twenty space score track (Tabletop Game Components)","summary":"220 mm score track with twenty discrete spaces and highlighted five-space milestones.","description":"220 mm score track with twenty discrete spaces and highlighted five-space milestones. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-score-track-cd4634ed","cdnUrl":"https://cdn.3dassets.dev/assets/1319/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-score-track-cd4634ed","thumbnailUrl":"https://cdn.3dassets.dev/assets/1319/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1319/v1/poster.webp","blurhash":"U7B3TcxZ4os:%2~BoJIV00of~VR%E101X9_1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":7868,"triangles":252,"vertices":756,"meshes":21,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.10999999940395355,-7.933754099655015e-7,-0.019994506559952004],"max":[0.10999999940395355,0.004500740077165511,0.019994506559952004]},"sizeMeters":[0.22,0.005,0.04],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:40.045Z","updatedAt":"2026-09-06T04:20:26.890Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1319/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TwentySpaceScoreTrackTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1319/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1319/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1319/v1/model.glb\" alt=\"Twenty space score track (Tabletop Game Components)\" 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/1319/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/1319/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1320","slug":"tabletop-game-components-game-mat-f38cc222","title":"Bound edge playing mat (Tabletop Game Components)","summary":"600 by 400 mm plain playing mat with a dark bound edge and solid underside.","description":"600 by 400 mm plain playing mat with a dark bound edge and solid underside. Metres, ground-centred origin. Static original component; no rules or physics included.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-game-mat-f38cc222","cdnUrl":"https://cdn.3dassets.dev/assets/1320/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-game-mat-f38cc222","thumbnailUrl":"https://cdn.3dassets.dev/assets/1320/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1320/v1/poster.webp","blurhash":"U64zHXofHXe.pIo~aKVY4TbIy?aeQ-VEkDpc","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":2504,"triangles":24,"vertices":72,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.30000001192092896,0.000011200301183771988,-0.20001221535156147],"max":[0.30000001192092896,0.0025003738820967058,0.20001221535156147]},"sizeMeters":[0.6,0.002,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:40.213Z","updatedAt":"2026-09-06T04:20:26.906Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1320/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BoundEdgePlayingMatTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1320/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1320/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1320/v1/model.glb\" alt=\"Bound edge playing mat (Tabletop Game Components)\" 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/1320/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/1320/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1322","slug":"tabletop-game-components-route-planning--4bbfa292-starter-scene","title":"Canal route planning layout (Tabletop Game Components)","summary":"Composed example for Tabletop Game Components.","description":"Connected canal tiles and bridge crossing with ownership tokens, dice and a score track.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-route-planning--4bbfa292-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/1322/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-route-planning--4bbfa292-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/1322/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1322/v1/poster.webp","blurhash":"U76I?6Xm4Ti{oxo}WEeT00nO.lW=RQVEs.X-","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":118576,"triangles":2328,"vertices":6984,"meshes":76,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.30000001192092896,0.000011200301183771988,-0.20001221535156147],"max":[0.30000001192092896,0.03849999845027924,0.20001221535156147]},"sizeMeters":[0.6,0.038,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:40.648Z","updatedAt":"2026-09-06T04:20:26.922Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1322/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CanalRoutePlanningLayoutTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1322/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1322/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1322/v1/model.glb\" alt=\"Canal route planning layout (Tabletop Game Components)\" 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/1322/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/1322/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"1321","slug":"tabletop-game-components-card-workshop-layout-538c0564","title":"Card and component workshop (Tabletop Game Components)","summary":"Composed example for Tabletop Game Components.","description":"Deck storage, sorting tray, dice tower and tactile counters arranged on a plain playing mat.","status":"published","url":"https://3dassets.dev/assets/tabletop-game-components-card-workshop-layout-538c0564","cdnUrl":"https://cdn.3dassets.dev/assets/1321/v1/model.glb","downloadUrl":"https://3dassets.dev/download/tabletop-game-components-card-workshop-layout-538c0564","thumbnailUrl":"https://cdn.3dassets.dev/assets/1321/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/1321/v1/poster.webp","blurhash":"U67B_sb^4TRkmkxuXmIV00rW.RbwUHIUrW-:","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"low-poly","title":"Low Poly"},{"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":239048,"triangles":5812,"vertices":17436,"meshes":106,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.30000001192092896,0.000011200301183771988,-0.20001221535156147],"max":[0.30000001192092896,0.10550000011920929,0.20001221535156147]},"sizeMeters":[0.6,0.105,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T04:19:40.583Z","updatedAt":"2026-09-06T04:20:26.933Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/1321/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CardAndComponentWorkshopTabletopGameComponents(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/1321/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/1321/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/1321/v1/model.glb\" alt=\"Card and component workshop (Tabletop Game Components)\" 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/1321/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/1321/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}