{"data":{"id":"37423","slug":"medieval-monastery-and-scriptorium-mortar-and-pestle-s-99e44b7c","title":"Mortar And Pestle Set (Medieval Monastery and Scriptorium)","summary":"Free 3D model of a medieval apothecary’s mortar and pestle: a ribbed stone mortar and a turned pestle with a dish of dried herb, on an oak tray, 0.46 m wide.","description":"Free 3D model of a medieval apothecary’s mortar and pestle: a ribbed stone mortar and a turned pestle with a dish of dried herb, on an oak tray, 0.46 m wide. Dimensions 0.46 by 0.30 by 0.30 m (X by Y by Z). Metre units, +Y up, +Z front, origin on the footprint at ground level. A dressing prop for a physic bench or an infirmary. The pestle rests in the tray beside the mortar rather than standing in it, so the set reads from above. Static geometry, no moving parts. 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-mortar-and-pestle-s-99e44b7c","cdnUrl":"https://cdn.3dassets.dev/assets/37423/v1/model.glb","downloadUrl":"https://3dassets.dev/download/medieval-monastery-and-scriptorium-mortar-and-pestle-s-99e44b7c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37423/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37423/v1/poster.webp","blurhash":"UAEouf~p004nE--;Mx9G00D*?b%N=]D%-:-:","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":29128,"triangles":1238,"vertices":1173,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.23000000417232513,3.3560189370909765e-7,-0.1500015286465831],"max":[0.23000000417232513,0.29598883089918143,0.1500015286465831]},"sizeMeters":[0.46,0.296,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:54:14.358Z","updatedAt":"2026-09-12T04:54:14.479Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37423/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MortarAndPestleSetMedievalMonasteryAndScriptorium(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37423/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37423/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37423/v1/model.glb\" alt=\"Mortar And Pestle Set (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/37423/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/37423/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}}