{"data":{"id":"37405","slug":"medieval-monastery-and-scriptorium-censer-01ebee75","title":"Censer (Medieval Monastery and Scriptorium)","summary":"Free 3D model of a medieval pierced brass censer with a domed lid, three suspension chains and a ring handle, for a chapel or a procession prop: 0.43 m tall.","description":"Free 3D model of a medieval pierced brass censer with a domed lid, three suspension chains and a ring handle, for a chapel or a procession prop: 0.43 m tall. Dimensions 0.18 by 0.43 by 0.19 m (X by Y by Z). Metre units, +Y up, +Z front, origin on the footprint at ground level. Modelled standing, with the chains drawn as short runs of links rising to the ring. The chains do not swing and no smoke is modelled: a hanging chain needs a joint per link and smoke is a particle effect, neither of which one rigid node transform can carry. Invented throughout: no real building, institution or text is reproduced, and any written surface carries abstract marks rather than letters. Claustral palette: limestone ashlar and darker rubble stone, lime plaster, oak and pine, lead, wrought iron, brass, parchment, undyed linen, madder and garden green. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/medieval-monastery-and-scriptorium-censer-01ebee75","cdnUrl":"https://cdn.3dassets.dev/assets/37405/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-monastery-and-scriptorium-censer-01ebee75","thumbnailUrl":"https://cdn.3dassets.dev/assets/37405/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37405/v1/poster.webp","blurhash":"U58gZ$tQ00D*IXoexsRk03WC~Txst7WrR%s8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"medieval","title":"Medieval"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"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":44420,"triangles":2096,"vertices":1865,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.09110614489140384,0,-0.09000831107971731],"max":[0.09110614489140384,0.4300000071525574,0.09650830935118261]},"sizeMeters":[0.182,0.43,0.187],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:54:06.840Z","updatedAt":"2026-09-12T04:54:06.947Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37405/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CenserMedievalMonasteryAndScriptorium(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37405/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37405/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37405/v1/model.glb\" alt=\"Censer (Medieval Monastery and Scriptorium)\" 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/37405/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/37405/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}}