# Censer (Medieval Monastery and Scriptorium)

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.

- **URL:** https://3dassets.dev/assets/medieval-monastery-and-scriptorium-censer-01ebee75
- **GLB (direct, CORS *, immutable):** https://cdn.3dassets.dev/assets/37405/v1/model.glb
- **Download (counted):** https://3dassets.dev/download/medieval-monastery-and-scriptorium-censer-01ebee75
- **Licence:** CC0 1.0 Universal: https://creativecommons.org/publicdomain/zero/1.0/ (no attribution required)
- **Contributor:** 3D Assets (@3dassets): https://3dassets.dev/u/3dassets
- **Category:** Props & Furniture
- **Tags:** Medieval, Realistic, Interior, Kit / Set
- **Geometry:** 2,096 triangles, 1,865 vertices, 2 meshes, 2 materials, 0 textures
- **Size (m):** 0.182 × 0.43 × 0.187
- **Animations:** none
- **File size:** 0.04 MB
- **Downloads:** 0
- **AI used (contributor-reported):** yes; model: Claude Opus 5

## About

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.

## Use with three.js

```js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'

const loader = new GLTFLoader()
loader.load('https://cdn.3dassets.dev/assets/37405/v1/model.glb', (gltf) => {
  scene.add(gltf.scene)
})
```

## React Three Fiber

```jsx
import { useGLTF } from '@react-three/drei'

export function CenserMedievalMonasteryAndScriptorium(props) {
  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37405/v1/model.glb')
  return <primitive object={scene} {...props} />
}
useGLTF.preload('https://cdn.3dassets.dev/assets/37405/v1/model.glb')
```

## <model-viewer>

```html
<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

```python
# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.
import bpy
bpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37405/v1/model.glb
# Metres and +Y up are converted to Blender's Z-up scene automatically.
```

## Godot

```gdscript
# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.
var packed := load("res://models/model.glb") as PackedScene
var model := packed.instantiate()
add_child(model)
```

## Unity

```csharp
// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,
// or load it at runtime straight from the CDN:
using GLTFast;
var gltf = new GltfImport();
if (await gltf.Load("https://cdn.3dassets.dev/assets/37405/v1/model.glb")) await gltf.InstantiateMainSceneAsync(transform);
```

---
JSON: https://3dassets.dev/api/v1/assets/medieval-monastery-and-scriptorium-censer-01ebee75 · Loads with a plain GLTFLoader: no Draco/KTX2 loaders needed.