{"data":{"id":3,"slug":"lantern-watch","title":"Lantern Watch","summary":"A medieval watch post kit with open stone defenses, warm lanterns, guard equipment and static courtyard life.","description":"A consistent blue slate, warm stone and aged timber kit. Small procedural brush textures create a hand-painted visual direction; these are generated textures, not manually painted source art.","url":"https://3dassets.dev/packs/lantern-watch","coverUrl":"https://cdn.3dassets.dev/assets/99/v1/poster.webp","assetCount":25,"aiGenerated":true,"aiGeneratedAssetCount":25,"aiModels":["GPT-6 via Codex"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":1803932,"totalTriangles":29008,"starterScene":{"id":"99","slug":"lantern-watch-starter-scene","title":"Lantern Watch starter scene","summary":"A composed lantern watch scene with named objects. Use it as a starting layout for a web or mobile game.","description":"A composed example built from the Lantern Watch kit. Each placed object has a named parent node for editing in three.js or Blender.\n\nUses metres, Y up and the pack's shared palette. This is a static environment layout. Individual models are also included in the pack. Collision meshes, navigation meshes, scripts and lighting are not included.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/99/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/99/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/99/v1/poster.webp","blurhash":"U9A19Ixu00WA8{V@tkjb00M{-:f+?[tQaeof","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":859860,"triangles":14510,"vertices":43530,"meshes":86,"materials":8,"textures":1,"animations":[],"boundingBox":{"min":[-5.5,-0.2000396755524349,-4.882402769933597],"max":[5.5,4.713366508483887,5.49990259827222]},"sizeMeters":[11,4.913,10.382],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:56.492Z","updatedAt":"2026-09-06T03:41:45.888Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/99/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStarterScene(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/99/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/99/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/99/v1/model.glb\" alt=\"Lantern Watch starter scene\" 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/99/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/99/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"75","slug":"lantern-watch-stone-gatehouse","title":"Lantern Watch Stone Gatehouse","summary":"A compact medieval guardhouse with slate roof, barred windows, timber door and layered stone footings.","description":"A 2 m square closed watch house. Small brush style textures provide a coherent procedural painted finish.\n\nMeasured bounds: 2.32 × 3.15 × 2.42 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Architecture uses a 2 m placement grid; decorative roof overhangs may extend beyond the grid. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-stone-gatehouse","cdnUrl":"https://cdn.3dassets.dev/assets/75/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-stone-gatehouse","thumbnailUrl":"https://cdn.3dassets.dev/assets/75/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/75/v1/poster.webp","blurhash":"U1CP#2~E00C70:9sqt-R00D~cbHq}yZ?Gw-:","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"}],"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":43900,"triangles":636,"vertices":1908,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-1.1610583666694196,0,-1.2100080910648432],"max":[1.1610583666694196,3.1500000953674316,1.2100080910648432]},"sizeMeters":[2.322,3.15,2.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:07:56.946Z","updatedAt":"2026-09-06T03:41:46.173Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/75/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStoneGatehouse(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/75/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/75/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/75/v1/model.glb\" alt=\"Lantern Watch Stone Gatehouse\" 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/75/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/75/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"76","slug":"lantern-watch-open-timber-watchtower","title":"Lantern Watch Open Timber Watchtower","summary":"An elevated open watch platform with slate canopy, ladder, timber braces and waist high rails for medieval outposts.","description":"A 2 m square tower with a platform at 2.4 m. Ladder and rails are modeled; traversal logic belongs in the game.\n\nMeasured bounds: 2.36 × 4.71 × 2.74 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Architecture uses a 2 m placement grid; decorative roof overhangs may extend beyond the grid. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-open-timber-watchtower","cdnUrl":"https://cdn.3dassets.dev/assets/76/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-open-timber-watchtower","thumbnailUrl":"https://cdn.3dassets.dev/assets/76/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/76/v1/poster.webp","blurhash":"U597Faxt00IW~qNG9E-p0gNG=_-V9ER+x]xD","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"}],"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":30504,"triangles":440,"vertices":1320,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-1.1819737113624103,0,-1.2099356068538734],"max":[1.1819737113624103,4.713366508483887,1.529159368412406]},"sizeMeters":[2.364,4.713,2.739],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:07:59.835Z","updatedAt":"2026-09-06T03:41:46.163Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/76/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchOpenTimberWatchtower(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/76/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/76/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/76/v1/model.glb\" alt=\"Lantern Watch Open Timber Watchtower\" 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/76/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/76/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"77","slug":"lantern-watch-stone-courtyard-arch","title":"Lantern Watch Stone Courtyard Arch","summary":"A two metre stone gateway with separated voussoir blocks and a brass colored keystone for medieval courtyards.","description":"An open arch with 1.3 m clear width between piers and a 2 m placement footprint.\n\nMeasured bounds: 2.14 × 2.66 × 0.65 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Architecture uses a 2 m placement grid; decorative roof overhangs may extend beyond the grid. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-stone-courtyard-arch","cdnUrl":"https://cdn.3dassets.dev/assets/77/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-stone-courtyard-arch","thumbnailUrl":"https://cdn.3dassets.dev/assets/77/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/77/v1/poster.webp","blurhash":"U7Ci:U%L00of~U-pDk9G00R*-;Rk9ZR*t7Rj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"}],"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":16324,"triangles":204,"vertices":612,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-1.0712931629000984,0,-0.32496458237254194],"max":[1.0712931629000984,2.662432803732797,0.32496458237254194]},"sizeMeters":[2.143,2.662,0.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:02.216Z","updatedAt":"2026-09-06T03:41:46.152Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/77/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStoneCourtyardArch(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/77/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/77/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/77/v1/model.glb\" alt=\"Lantern Watch Stone Courtyard Arch\" 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/77/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/77/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"78","slug":"lantern-watch-stone-battlement-wall","title":"Lantern Watch Stone Battlement Wall","summary":"A two metre defensive wall with individual masonry blocks, a capped parapet and three raised merlons.","description":"A solid 2 m long wall module. Crenellations and mortar gaps are modeled geometry.\n\nMeasured bounds: 2.00 × 2.47 × 0.60 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Architecture uses a 2 m placement grid; decorative roof overhangs may extend beyond the grid. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-stone-battlement-wall","cdnUrl":"https://cdn.3dassets.dev/assets/78/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-stone-battlement-wall","thumbnailUrl":"https://cdn.3dassets.dev/assets/78/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/78/v1/poster.webp","blurhash":"U5DJIx?b009F8{?b_M4n00D*_2?aM{-;NG9F","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"}],"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":22688,"triangles":324,"vertices":972,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.999962931593646,0,-0.3000152627298414],"max":[0.999962931593646,2.4700000286102295,0.3000152627298414]},"sizeMeters":[2,2.47,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:03.826Z","updatedAt":"2026-09-06T03:41:46.142Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/78/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStoneBattlementWall(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/78/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/78/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/78/v1/model.glb\" alt=\"Lantern Watch Stone Battlement Wall\" 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/78/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/78/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"79","slug":"lantern-watch-courtyard-cobble-tile","title":"Lantern Watch Courtyard Cobble Tile","summary":"A two metre courtyard tile of staggered stone pavers with edge curbs for medieval lanes and guard posts.","description":"A 2 m square road tile. Pavers are individually modeled with narrow gaps and consistent top height.\n\nMeasured bounds: 2.00 × 0.12 × 2.00 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Architecture uses a 2 m placement grid; decorative roof overhangs may extend beyond the grid. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-courtyard-cobble-tile","cdnUrl":"https://cdn.3dassets.dev/assets/79/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-courtyard-cobble-tile","thumbnailUrl":"https://cdn.3dassets.dev/assets/79/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/79/v1/poster.webp","blurhash":"U6Bz8[%200Ri?boyM{f700R*~pWB4URjofRj","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"}],"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":19656,"triangles":276,"vertices":828,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-1,0.000013198659301917604,-1],"max":[1,0.11993835126975398,1]},"sizeMeters":[2,0.12,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:11.977Z","updatedAt":"2026-09-06T03:41:46.132Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/79/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchCourtyardCobbleTile(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/79/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/79/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/79/v1/model.glb\" alt=\"Lantern Watch Courtyard Cobble Tile\" 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/79/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/79/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"80","slug":"lantern-watch-arched-courtyard-bridge","title":"Lantern Watch Arched Courtyard Bridge","summary":"A small raised stone bridge with stepped approaches and low timber rails for medieval drainage channels.","description":"A 2 m long pedestrian bridge along Z. Steps lead to a level center deck; the underside remains open.\n\nMeasured bounds: 1.45 × 0.69 × 2.00 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Architecture uses a 2 m placement grid; decorative roof overhangs may extend beyond the grid. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-arched-courtyard-bridge","cdnUrl":"https://cdn.3dassets.dev/assets/80/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-arched-courtyard-bridge","thumbnailUrl":"https://cdn.3dassets.dev/assets/80/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/80/v1/poster.webp","blurhash":"UADcH#~p01D%MwMyR*t700D*%MX9x^%MxuS2","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"}],"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":11804,"triangles":144,"vertices":432,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.7249366740928374,0.00003358228135252883,-1],"max":[0.7249366740928374,0.6899714747295828,1]},"sizeMeters":[1.45,0.69,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:14.947Z","updatedAt":"2026-09-06T03:41:46.123Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/80/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchArchedCourtyardBridge(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/80/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/80/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/80/v1/model.glb\" alt=\"Lantern Watch Arched Courtyard Bridge\" 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/80/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/80/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"81","slug":"lantern-watch-lantern-guard-figure","title":"Lantern Watch Lantern Guard Figure","summary":"A static medieval watch guard with a slate tabard, helmet, belt and lantern held beside the body.","description":"An unrigged standing humanoid figure with modeled boots, mitten hands and open face helmet. No skinning or animation.\n\nMeasured bounds: 0.82 × 1.45 × 0.38 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-lantern-guard-figure","cdnUrl":"https://cdn.3dassets.dev/assets/81/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-lantern-guard-figure","thumbnailUrl":"https://cdn.3dassets.dev/assets/81/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/81/v1/poster.webp","blurhash":"U67ndzt700NFkroznhRP4Tj]?wR*IARjtS%M","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":77244,"triangles":1308,"vertices":3924,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-0.36498610268278153,0,-0.18501671250187293],"max":[0.45200307739107676,1.4500000476837158,0.19002282013666147]},"sizeMeters":[0.817,1.45,0.375],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:17.480Z","updatedAt":"2026-09-06T03:41:46.112Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/81/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchLanternGuardFigure(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/81/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/81/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/81/v1/model.glb\" alt=\"Lantern Watch Lantern Guard Figure\" 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/81/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/81/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"82","slug":"lantern-watch-courtyard-rat","title":"Lantern Watch Courtyard Rat","summary":"A small static gray rat with rounded ears, pointed muzzle and long tapering tail for medieval courtyard detail.","description":"An unrigged ground animal with modeled whisker marks, paws and segmented tail.\n\nMeasured bounds: 0.41 × 0.29 × 0.80 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-courtyard-rat","cdnUrl":"https://cdn.3dassets.dev/assets/82/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-courtyard-rat","thumbnailUrl":"https://cdn.3dassets.dev/assets/82/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/82/v1/poster.webp","blurhash":"U36*aW_20001RjRjRjxu009G~q_2%M%MxuD%","category":{"slug":"animals","title":"Animals"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":68748,"triangles":1112,"vertices":3336,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.12502468941505807,0.000010414296817362612,-0.4595448076725006],"max":[0.28300742624100106,0.2869895861800198,0.3400000035762787]},"sizeMeters":[0.408,0.287,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:19.549Z","updatedAt":"2026-09-06T03:41:46.099Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/82/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchCourtyardRat(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/82/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/82/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/82/v1/model.glb\" alt=\"Lantern Watch Courtyard Rat\" 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/82/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/82/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"83","slug":"lantern-watch-perched-courtyard-crow","title":"Lantern Watch Perched Courtyard Crow","summary":"A static dark crow with folded wings, angular beak and gripping feet for medieval walls and roof edges.","description":"An unrigged perched bird with a faceted body, layered wing outline and separated toes.\n\nMeasured bounds: 0.32 × 0.56 × 0.63 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-perched-courtyard-crow","cdnUrl":"https://cdn.3dassets.dev/assets/83/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-perched-courtyard-crow","thumbnailUrl":"https://cdn.3dassets.dev/assets/83/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/83/v1/poster.webp","blurhash":"U24oH0${009vNFob%2WF00kE.TnNRjRoR%$z","category":{"slug":"animals","title":"Animals"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":71352,"triangles":1208,"vertices":3624,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.1600000038743019,0,-0.3700000047683716],"max":[0.1600000038743019,0.5569046615756609,0.2599983946837638]},"sizeMeters":[0.32,0.557,0.63],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:21.645Z","updatedAt":"2026-09-06T03:41:46.090Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/83/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchPerchedCourtyardCrow(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/83/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/83/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/83/v1/model.glb\" alt=\"Lantern Watch Perched Courtyard Crow\" 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/83/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/83/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"84","slug":"lantern-watch-courtyard-cypress","title":"Lantern Watch Courtyard Cypress","summary":"A tall narrow cypress with tapered foliage lobes and exposed trunk for medieval gardens and watch post entrances.","description":"A narrow evergreen tree built from shaped faceted lobes around a branching trunk.\n\nMeasured bounds: 0.98 × 3.27 × 0.77 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-courtyard-cypress","cdnUrl":"https://cdn.3dassets.dev/assets/84/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-courtyard-cypress","thumbnailUrl":"https://cdn.3dassets.dev/assets/84/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/84/v1/poster.webp","blurhash":"U44.bpRi00%MXkj[n6ay8xoz.kM{V{e:ocbb","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":45448,"triangles":704,"vertices":2112,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.530025628095151,0,-0.3825614191965781],"max":[0.4500256447844515,3.2699999809265137,0.3825614191965781]},"sizeMeters":[0.98,3.27,0.765],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:23.543Z","updatedAt":"2026-09-06T03:41:46.081Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/84/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchCourtyardCypress(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/84/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/84/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/84/v1/model.glb\" alt=\"Lantern Watch Courtyard Cypress\" 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/84/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/84/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"85","slug":"lantern-watch-climbing-wall-ivy","title":"Lantern Watch Climbing Wall Ivy","summary":"A branching ivy patch with individual heart shaped leaf clusters for dressing medieval stone walls.","description":"A static vertical foliage patch designed for placement just in front of a wall. No wall geometry is included.\n\nMeasured bounds: 0.85 × 1.61 × 0.07 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-climbing-wall-ivy","cdnUrl":"https://cdn.3dassets.dev/assets/85/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-climbing-wall-ivy","thumbnailUrl":"https://cdn.3dassets.dev/assets/85/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/85/v1/poster.webp","blurhash":"U25Oj8%f008{?utQIBMy4Ut7_MInMei|x[X5","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":108384,"triangles":1752,"vertices":5256,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.38997388090326107,0,-0.01804412245499399],"max":[0.4599739035530261,1.606662392616272,0.05000076248540815]},"sizeMeters":[0.85,1.607,0.068],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:25.660Z","updatedAt":"2026-09-06T03:41:46.069Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/85/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchClimbingWallIvy(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/85/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/85/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/85/v1/model.glb\" alt=\"Lantern Watch Climbing Wall Ivy\" 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/85/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/85/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"86","slug":"lantern-watch-stone-winding-well","title":"Lantern Watch Stone Winding Well","summary":"An open stone well with timber winding frame, suspended bucket and pitched slate cover for medieval courtyards.","description":"A hollow ring well with static crank and rope. Dark water is represented by a solid inset disk.\n\nMeasured bounds: 1.83 × 2.19 × 1.52 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-stone-winding-well","cdnUrl":"https://cdn.3dassets.dev/assets/86/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-stone-winding-well","thumbnailUrl":"https://cdn.3dassets.dev/assets/86/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/86/v1/poster.webp","blurhash":"U3BM*=x]00Vs?IIU$w_300E2~q={?9W?03Mc","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":50668,"triangles":744,"vertices":2232,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-0.8820268104033239,0,-0.760007818701226],"max":[0.9500061636447005,2.186599016189575,0.760007818701226]},"sizeMeters":[1.832,2.187,1.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:29.190Z","updatedAt":"2026-09-06T03:41:46.058Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/86/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStoneWindingWell(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/86/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/86/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/86/v1/model.glb\" alt=\"Lantern Watch Stone Winding Well\" 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/86/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/86/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"87","slug":"lantern-watch-courtyard-lantern-post","title":"Lantern Watch Courtyard Lantern Post","summary":"A timber lantern post with angled hanging bracket, warm glass panels and a stone mounting base.","description":"A static emissive lantern on a post. Emissive surfaces do not include a glTF light or dynamic light source.\n\nMeasured bounds: 0.95 × 2.26 × 0.44 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-courtyard-lantern-post","cdnUrl":"https://cdn.3dassets.dev/assets/87/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-courtyard-lantern-post","thumbnailUrl":"https://cdn.3dassets.dev/assets/87/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/87/v1/poster.webp","blurhash":"U27^-{~W0000#R9G5S~pQ,%Mtn4oQ-%MyD9F","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":28540,"triangles":420,"vertices":1260,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-0.17499999701976776,0.000011749200200694698,-0.2200234597387118],"max":[0.7700234567584796,2.259999990463257,0.2200234597387118]},"sizeMeters":[0.945,2.26,0.44],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:33.110Z","updatedAt":"2026-09-06T03:41:46.048Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/87/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchCourtyardLanternPost(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/87/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/87/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/87/v1/model.glb\" alt=\"Lantern Watch Courtyard Lantern Post\" 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/87/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/87/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"88","slug":"lantern-watch-hanging-wall-lantern","title":"Lantern Watch Hanging Wall Lantern","summary":"A warm medieval lantern on a forged wall bracket with modeled cage bars, cap and mounting bolts.","description":"A wall mount light prop with a flat rear plate facing negative Z. Static emissive material only.\n\nMeasured bounds: 0.44 × 0.80 × 0.55 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-hanging-wall-lantern","cdnUrl":"https://cdn.3dassets.dev/assets/88/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-hanging-wall-lantern","thumbnailUrl":"https://cdn.3dassets.dev/assets/88/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/88/v1/poster.webp","blurhash":"U697hR?H004:4:IU-:?b01IU~U-;~Txt4;IV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":34708,"triangles":552,"vertices":1656,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.22000183438885132,0,-0.3275132349263644],"max":[0.22000183438885132,0.800000011920929,0.22001324803938627]},"sizeMeters":[0.44,0.8,0.548],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:36.058Z","updatedAt":"2026-09-06T03:41:46.037Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/88/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchHangingWallLantern(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/88/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/88/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/88/v1/model.glb\" alt=\"Lantern Watch Hanging Wall Lantern\" 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/88/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/88/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"89","slug":"lantern-watch-guardroom-bench","title":"Lantern Watch Guardroom Bench","summary":"A narrow timber bench with carved feet, plank seat and a lower stretcher for watch houses and courtyards.","description":"A 1.5 m long bench with a 0.45 m seat height and two trestle supports.\n\nMeasured bounds: 1.50 × 0.53 × 0.46 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-guardroom-bench","cdnUrl":"https://cdn.3dassets.dev/assets/89/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-guardroom-bench","thumbnailUrl":"https://cdn.3dassets.dev/assets/89/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/89/v1/poster.webp","blurhash":"U8CYzB%29a={^*~UWU9u00x?t7EL57E3%LoL","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"interior","title":"Interior"},{"slug":"exterior","title":"Exterior"}],"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":16276,"triangles":204,"vertices":612,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.75,-0.000040599154346288024,-0.23001037629322185],"max":[0.75,0.5279957163387373,0.23001037629322185]},"sizeMeters":[1.5,0.528,0.46],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:38.360Z","updatedAt":"2026-09-06T03:41:46.024Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/89/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchGuardroomBench(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/89/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/89/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/89/v1/model.glb\" alt=\"Lantern Watch Guardroom Bench\" 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/89/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/89/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"90","slug":"lantern-watch-ironbound-watch-chest","title":"Lantern Watch Ironbound Watch Chest","summary":"A timber storage chest with a rounded lid, broad metal straps, corner feet and front latch for medieval rooms.","description":"A closed static chest. Lid curvature uses a faceted half barrel silhouette and does not animate.\n\nMeasured bounds: 0.85 × 0.65 × 0.55 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-ironbound-watch-chest","cdnUrl":"https://cdn.3dassets.dev/assets/90/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-ironbound-watch-chest","thumbnailUrl":"https://cdn.3dassets.dev/assets/90/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/90/v1/poster.webp","blurhash":"U2BfhF~o00i^9w=_-.oI000L%2?F=sEl9a9a","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":31828,"triangles":456,"vertices":1368,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.42500001192092896,0.00000854369266449495,-0.24999811840131225],"max":[0.42500001192092896,0.650010829250204,0.2979886741120047]},"sizeMeters":[0.85,0.65,0.548],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:40.093Z","updatedAt":"2026-09-06T03:41:46.015Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/90/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchIronboundWatchChest(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/90/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/90/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/90/v1/model.glb\" alt=\"Lantern Watch Ironbound Watch Chest\" 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/90/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/90/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"91","slug":"lantern-watch-staved-rain-barrel","title":"Lantern Watch Staved Rain Barrel","summary":"A tapered wooden rain barrel with an open dark top, three iron hoops and a front brass spigot.","description":"A static open barrel with inset water disk and modeled tap. No liquid simulation.\n\nMeasured bounds: 0.73 × 0.77 × 0.82 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-staved-rain-barrel","cdnUrl":"https://cdn.3dassets.dev/assets/91/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-staved-rain-barrel","thumbnailUrl":"https://cdn.3dassets.dev/assets/91/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/91/v1/poster.webp","blurhash":"U5AJyW%1009aYRM|vfx[03IV^N%LxUsmRSSg","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":41800,"triangles":756,"vertices":2268,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.36500000953674316,0,-0.36500000953674316],"max":[0.36500000953674316,0.7716495197770101,0.45598074793815613]},"sizeMeters":[0.73,0.772,0.821],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:41.985Z","updatedAt":"2026-09-06T03:41:46.006Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/91/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStavedRainBarrel(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/91/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/91/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/91/v1/model.glb\" alt=\"Lantern Watch Staved Rain Barrel\" 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/91/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/91/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"92","slug":"lantern-watch-watch-heater-shield","title":"Lantern Watch Watch Heater Shield","summary":"A slate blue heater shield with thick brass rim, raised center boss and a reverse grip for medieval equipment.","description":"A static display shield with faceted lower taper. Front faces +Z and grip projects behind the shield.\n\nMeasured bounds: 0.70 × 0.85 × 0.25 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-watch-heater-shield","cdnUrl":"https://cdn.3dassets.dev/assets/92/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-watch-heater-shield","thumbnailUrl":"https://cdn.3dassets.dev/assets/92/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/92/v1/poster.webp","blurhash":"UBAc^{%f00D%~V%2D*M{D$xY%gIsIof6kDNI","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":45688,"triangles":692,"vertices":2076,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-0.35003129129032595,0,-0.14163740468743685],"max":[0.35003129129032595,0.8500000238418579,0.10998809978167054]},"sizeMeters":[0.7,0.85,0.252],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:43.729Z","updatedAt":"2026-09-06T03:41:45.997Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/92/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchWatchHeaterShield(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/92/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/92/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/92/v1/model.glb\" alt=\"Lantern Watch Watch Heater Shield\" 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/92/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/92/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"93","slug":"lantern-watch-leaf-head-watch-spear","title":"Lantern Watch Leaf Head Watch Spear","summary":"A long wooden watch spear with a broad leaf shaped head, bronze socket and wrapped grip for medieval guards.","description":"A static upright polearm with a modeled faceted point and compact grip rings.\n\nMeasured bounds: 0.21 × 2.20 × 0.08 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-leaf-head-watch-spear","cdnUrl":"https://cdn.3dassets.dev/assets/93/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-leaf-head-watch-spear","thumbnailUrl":"https://cdn.3dassets.dev/assets/93/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/93/v1/poster.webp","blurhash":"U36tt4xt00D*~qof00M{t-jcQ,W,yDj]MdWA","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":55312,"triangles":848,"vertices":2544,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.10499130222479934,0,-0.03999391775250264],"max":[0.10499130222479934,2.200000047683716,0.03999391775250264]},"sizeMeters":[0.21,2.2,0.08],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:45.336Z","updatedAt":"2026-09-06T03:41:45.990Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/93/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchLeafHeadWatchSpear(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/93/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/93/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/93/v1/model.glb\" alt=\"Lantern Watch Leaf Head Watch Spear\" 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/93/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/93/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"94","slug":"lantern-watch-courtyard-smith-anvil","title":"Lantern Watch Courtyard Smith Anvil","summary":"A compact iron anvil on a timber stump with tapered horn, heel block and securing bands for medieval work areas.","description":"A static smithing prop with a flat striking surface and stylized tapered horn.\n\nMeasured bounds: 0.87 × 0.93 × 0.65 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-courtyard-smith-anvil","cdnUrl":"https://cdn.3dassets.dev/assets/94/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-courtyard-smith-anvil","thumbnailUrl":"https://cdn.3dassets.dev/assets/94/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/94/v1/poster.webp","blurhash":"U484Y*~W0000%$t6McM}4oNH%Mt4ROR.kXob","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":11732,"triangles":124,"vertices":372,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.3400000035762787,-0.00002030313613449186,-0.32335642907338397],"max":[0.5299999713897705,0.930020131028182,0.32335642907338397]},"sizeMeters":[0.87,0.93,0.647],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:47.127Z","updatedAt":"2026-09-06T03:41:45.980Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/94/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchCourtyardSmithAnvil(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/94/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/94/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/94/v1/model.glb\" alt=\"Lantern Watch Courtyard Smith Anvil\" 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/94/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/94/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"95","slug":"lantern-watch-tavern-cheese-wheel","title":"Lantern Watch Tavern Cheese Wheel","summary":"A small golden cheese wheel with modeled rind band and a wedge resting beside it for medieval food displays.","description":"A round cheese and separate display wedge combined into one static prop. The wheel has no cutaway.\n\nMeasured bounds: 0.71 × 0.14 × 0.45 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-tavern-cheese-wheel","cdnUrl":"https://cdn.3dassets.dev/assets/95/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-tavern-cheese-wheel","thumbnailUrl":"https://cdn.3dassets.dev/assets/95/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/95/v1/poster.webp","blurhash":"UAC6c6=_00E,-m%LIpE200Ip~Ur;IvD%$~-:","category":{"slug":"food","title":"Food & Drink"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":34716,"triangles":524,"vertices":1572,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-0.22699999809265137,-0.000011172166410416962,-0.2270072593479629],"max":[0.47999998927116394,0.13999786295109745,0.2270072593479629]},"sizeMeters":[0.707,0.14,0.454],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:49.100Z","updatedAt":"2026-09-06T03:41:45.966Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/95/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchTavernCheeseWheel(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/95/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/95/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/95/v1/model.glb\" alt=\"Lantern Watch Tavern Cheese Wheel\" 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/95/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/95/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"96","slug":"lantern-watch-lantern-watch-token","title":"Lantern Watch Lantern Watch Token","summary":"A thick bronze token with raised lantern emblem and slate inset for watch quests and inventory graphics.","description":"A static front facing 3D badge with a modeled lantern motif and beveled circular rim.\n\nMeasured bounds: 0.60 × 0.60 × 0.12 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-lantern-watch-token","cdnUrl":"https://cdn.3dassets.dev/assets/96/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-lantern-watch-token","thumbnailUrl":"https://cdn.3dassets.dev/assets/96/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/96/v1/poster.webp","blurhash":"U7C6lTXT00Vr^%xtIpIU00xB?wR:IpRQNHNg","category":{"slug":"icons","title":"3D Icons & UI"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":25704,"triangles":356,"vertices":1068,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.30000001192092896,0,-0.02999030357489866],"max":[0.30000001192092896,0.6000000238418579,0.08499572706134037]},"sizeMeters":[0.6,0.6,0.115],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:50.870Z","updatedAt":"2026-09-06T03:41:45.954Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/96/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchLanternWatchToken(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/96/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/96/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/96/v1/model.glb\" alt=\"Lantern Watch Lantern Watch Token\" 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/96/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/96/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"97","slug":"lantern-watch-courtyard-flame-brazier","title":"Lantern Watch Courtyard Flame Brazier","summary":"A three leg iron brazier with an open rim, glowing coals and a static modeled flame for medieval courtyards.","description":"An emissive decorative fire prop. Flame and coals are static meshes with no particles or point lights.\n\nMeasured bounds: 0.61 × 1.12 × 0.61 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-courtyard-flame-brazier","cdnUrl":"https://cdn.3dassets.dev/assets/97/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-courtyard-flame-brazier","thumbnailUrl":"https://cdn.3dassets.dev/assets/97/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/97/v1/poster.webp","blurhash":"UA9Qa9xt00M|^%kB9HRj0MRj?Gxt02ah~Uoe","category":{"slug":"effects-primitives","title":"Effects & Primitives"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"exterior","title":"Exterior"}],"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":25880,"triangles":378,"vertices":1134,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.3050000071525574,0,-0.3050000071525574],"max":[0.30968219440786365,1.1161412000656128,0.3050000071525574]},"sizeMeters":[0.615,1.116,0.61],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:52.699Z","updatedAt":"2026-09-06T03:41:45.941Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/97/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchCourtyardFlameBrazier(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/97/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/97/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/97/v1/model.glb\" alt=\"Lantern Watch Courtyard Flame Brazier\" 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/97/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/97/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"98","slug":"lantern-watch-lantern-watch-banner","title":"Lantern Watch Lantern Watch Banner","summary":"A slate cloth watch banner with bronze trim, lantern crest and weighted hem for medieval guard posts.","description":"A rigid hanging banner with modeled cloth waves suggested by three shallow panel folds. Flat rear faces negative Z; no cloth simulation.\n\nMeasured bounds: 0.84 × 0.91 × 0.09 m (width × height × depth). One unit is one metre. Grounded origin at y=0, +Y up and front +Z. Static unrigged geometry. Place freely at world scale. Materials are shared within the Lantern Watch kit. CC0 original procedural geometry.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-lantern-watch-banner","cdnUrl":"https://cdn.3dassets.dev/assets/98/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-lantern-watch-banner","thumbnailUrl":"https://cdn.3dassets.dev/assets/98/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/98/v1/poster.webp","blurhash":"U5BM-^-o00E2_2xuMxD%DNWB%%of%2-nM|4=","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"slug":"interior","title":"Interior"},{"slug":"exterior","title":"Exterior"}],"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":25168,"triangles":336,"vertices":1008,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.4199901295827658,0,-0.030016043432687663],"max":[0.4199901295827658,0.9059807658195496,0.06251604410323991]},"sizeMeters":[0.84,0.906,0.093],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:54.510Z","updatedAt":"2026-09-06T03:41:45.899Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/98/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchLanternWatchBanner(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/98/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/98/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/98/v1/model.glb\" alt=\"Lantern Watch Lantern Watch Banner\" 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/98/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/98/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"99","slug":"lantern-watch-starter-scene","title":"Lantern Watch starter scene","summary":"A composed lantern watch scene with named objects. Use it as a starting layout for a web or mobile game.","description":"A composed example built from the Lantern Watch kit. Each placed object has a named parent node for editing in three.js or Blender.\n\nUses metres, Y up and the pack's shared palette. This is a static environment layout. Individual models are also included in the pack. Collision meshes, navigation meshes, scripts and lighting are not included.\n\nPart of [Lantern Watch](/packs/lantern-watch).","status":"published","url":"https://3dassets.dev/assets/lantern-watch-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/99/v1/model.glb","downloadUrl":"https://3dassets.dev/download/lantern-watch-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/99/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/99/v1/poster.webp","blurhash":"U9A19Ixu00WA8{V@tkjb00M{-:f+?[tQaeof","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"hand-painted","title":"Hand-painted"},{"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":859860,"triangles":14510,"vertices":43530,"meshes":86,"materials":8,"textures":1,"animations":[],"boundingBox":{"min":[-5.5,-0.2000396755524349,-4.882402769933597],"max":[5.5,4.713366508483887,5.49990259827222]},"sizeMeters":[11,4.913,10.382],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"GPT-6 via Codex","downloads":0,"publishedAt":"2026-09-06T03:08:56.492Z","updatedAt":"2026-09-06T03:41:45.888Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/99/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LanternWatchStarterScene(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/99/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/99/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/99/v1/model.glb\" alt=\"Lantern Watch starter scene\" 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/99/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/99/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}