{"data":{"id":"21","slug":"clinic-and-veterinary-practice","title":"Clinic and vet practice","summary":"Walk a 16 by 10 metre practice built from the Primary Care Clinic and Veterinary Practice pack: reception and waiting room, a consulting room, a dispensary with fridges and cabinets that open, a veterinary treatment area and kennel banks.","url":"https://3dassets.dev/demos/clinic-and-veterinary-practice","coverUrl":"https://cdn.3dassets.dev/media/clinic-and-veterinary-practice-demo-2.png","featured":false,"pack":{"slug":"clinic-and-veterinary-practice","title":"Primary Care Clinic and Veterinary Practice","url":"https://3dassets.dev/packs/clinic-and-veterinary-practice","summary":"A realistic primary care clinic and small animal veterinary practice: reception, consulting, treatment, minor procedures, dispensing, veterinary prep, kennels and runs.","assetCount":121,"totalBytes":20044812,"starterScene":{"slug":"clinic-and-veterinary-practice-consultin-4b5ee682-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/16833/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-consultin-4b5ee682-starter-scene","fileSize":1370632}},"placementCount":27,"assetCount":22,"spawn":{"position":[0,0,3.2],"yaw":180},"publishedAt":"2026-09-07T16:22:59.619Z","updatedAt":"2026-09-07T16:22:59.619Z","description":"One practice floor from 24 of the pack's 121 models, in the room preset with cool light and lamps under a 3.2 m ceiling.\n\nYou start in the waiting room facing reception: two 1200 modules with benches behind you. Behind reception is the dispensary with its counter modules, shelving, the vaccine fridge and the controlled drug cabinet. The consulting room on the west has the examination couch with steps, the clinician desk, a patient chair, the basin and a curtain drape. The veterinary side on the east has the raised examination table, the prep and induction bench, an instrument cabinet, a treatment trolley and a drip stand, with three kennel banks and the grooming bath along the back wall.\n\nThis pack ships animation clips: the couch, the desk, the fridge, the drug cabinet, the counter drawers, the prep bench, the instrument cabinet, the trolley, the kennel doors and the bath ramp play as you come within three metres and rewind when you leave.","scene":{"version":1,"spawn":{"position":[0,0,3.2],"yaw":180},"bounds":{"min":[-8,0,-6],"max":[8,3.2,4.5]},"ground":{"style":"plain"},"environment":{"preset":"room","wallHeight":3.2,"wall":"#eef1f2","floor":"#d9dedc","light":"cool","lampHeight":2.9,"shadows":true},"placements":[{"asset":"clinic-and-veterinary-practice-reception-desk-module-d612d498","position":[-0.6,0,-1],"rotation":0},{"asset":"clinic-and-veterinary-practice-reception-desk-module-d612d498","position":[0.6,0,-1],"rotation":0},{"asset":"clinic-and-veterinary-practice-waiting-bench-5-seat-0695a546","position":[-4,0,3.3],"rotation":180},{"asset":"clinic-and-veterinary-practice-waiting-bench-3-seat-bef06621","position":[4.5,0,3.3],"rotation":180},{"asset":"clinic-and-veterinary-practice-waiting-bench-3-seat-bef06621","position":[-7,0,1.5],"rotation":90},{"asset":"clinic-and-veterinary-practice-examination-couch-with--20a73e55","position":[-5.5,0,-3.5],"rotation":90},{"asset":"clinic-and-veterinary-practice-clinician-desk-eca22374","position":[-7,0,-1.2],"rotation":90},{"asset":"clinic-and-veterinary-practice-patient-chair-e364bf45","position":[-5.2,0,-0.8],"rotation":180},{"asset":"clinic-and-veterinary-practice-clinical-hand-wash-basi-8eaa7002","position":[-7.3,0,-5],"rotation":90},{"asset":"clinic-and-veterinary-practice-cubicle-curtain-track-a05a94a2","position":[-4.4,0,-5.4],"rotation":0},{"asset":"clinic-and-veterinary-practice-dispensing-counter-modu-c70fd044","position":[-1.2,0,-3],"rotation":0},{"asset":"clinic-and-veterinary-practice-dispensing-counter-draw-c4668283","position":[-0.6,0,-3],"rotation":0},{"asset":"clinic-and-veterinary-practice-dispensing-counter-modu-c70fd044","position":[0,0,-3],"rotation":0},{"asset":"clinic-and-veterinary-practice-dispensing-counter-draw-c4668283","position":[0.6,0,-3],"rotation":0},{"asset":"clinic-and-veterinary-practice-dispensing-shelving-f439340f","position":[-1.2,0,-4.2],"rotation":0},{"asset":"clinic-and-veterinary-practice-dispensing-shelving-f439340f","position":[-0.3,0,-4.2],"rotation":0},{"asset":"clinic-and-veterinary-practice-vaccine-fridge-logger-31a34cee","position":[1.4,0,-4.2],"rotation":0},{"asset":"clinic-and-veterinary-practice-controlled-drug-cabinet-638b7c11","position":[2.6,0,-4.2],"rotation":0},{"asset":"clinic-and-veterinary-practice-vet-examination-table-0e78660b","position":[4.5,0,-2],"rotation":0},{"asset":"clinic-and-veterinary-practice-prep-induction-bench-c1c53861","position":[7,0,-2.2],"rotation":270},{"asset":"clinic-and-veterinary-practice-instrument-cabinet-98ec2833","position":[7.2,0,-4],"rotation":270},{"asset":"clinic-and-veterinary-practice-treatment-trolley-b5ff1ad0","position":[5.8,0,-3.5],"rotation":0},{"asset":"clinic-and-veterinary-practice-iv-stand-0309e53f","position":[3.8,0,-3],"rotation":0},{"asset":"clinic-and-veterinary-practice-kennel-bank-medium-21ab23fa","position":[3.6,0,-5.5],"rotation":0},{"asset":"clinic-and-veterinary-practice-kennel-bank-small-a20c2524","position":[5,0,-5.5],"rotation":0},{"asset":"clinic-and-veterinary-practice-kennel-bank-large-45e15996","position":[6.4,0,-5.5],"rotation":0},{"asset":"clinic-and-veterinary-practice-grooming-bath-114d778e","position":[2,0,-5.4],"rotation":0}],"points":[{"position":[0,0,1.8],"title":"Reception","text":"Two 1200 reception desk modules, with waiting benches behind you: a five-seat, and two three-seats.","asset":"clinic-and-veterinary-practice-reception-desk-module-d612d498"},{"position":[-5,0,-2.2],"title":"Consulting room","text":"The examination couch with steps, the clinician desk, a patient chair, the hand-wash basin and a curtain drape. The couch and the desk have clips and open as you approach.","asset":"clinic-and-veterinary-practice-examination-couch-with--20a73e55"},{"position":[0,0,-2.1],"title":"Dispensary","text":"Dispensing counter modules behind reception with shelving, the vaccine fridge with its data logger and the controlled drug cabinet. The drawers and doors have clips.","asset":"clinic-and-veterinary-practice-vaccine-fridge-logger-31a34cee"},{"position":[5.3,0,-0.6],"title":"Veterinary treatment","text":"The raised veterinary examination table, the prep and induction bench, an instrument cabinet, a treatment trolley and a drip stand.","asset":"clinic-and-veterinary-practice-prep-induction-bench-c1c53861"},{"position":[4.5,0,-4.3],"title":"Kennels","text":"Three kennel banks along the back wall, four, six and two bays, and the grooming bath with its ramp. The kennel doors and the bath ramp have clips.","asset":"clinic-and-veterinary-practice-kennel-bank-medium-21ab23fa"}],"poster":{"position":[7.2,2.6,4],"lookAt":[-1.5,0.8,-3]}},"bounds":{"min":[-8,0,-6],"max":[8,3.2,4.5]},"assets":[{"id":"16718","slug":"clinic-and-veterinary-practice-reception-desk-module-d612d498","title":"Reception desk module 1200 (Primary Care Clinic and Veterinary Practice)","summary":"A 1.2 m reception counter module on the 600 mm counter-run grid: panelled carcass with a recessed plinth, postformed staff worktop, raised customer ledge on brackets and a framed glazed screen guard with a perforated speech grille.","description":"A 1.2 m reception counter module on the 600 mm counter-run grid: panelled carcass with a recessed plinth, postformed staff worktop, raised customer ledge on brackets and a framed glazed screen guard with a perforated speech grille. Overall 1.20 by 1.61 by 0.78 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Tiles along X on the 600 mm counter-run grid through counter-left and counter-right ports at mid-height. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-reception-desk-module-d612d498","cdnUrl":"https://cdn.3dassets.dev/assets/16718/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-reception-desk-module-d612d498","thumbnailUrl":"https://cdn.3dassets.dev/assets/16718/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16718/v1/poster.webp","blurhash":"UBEVyn?H009G9Z%M%1D$00NH~Wt5^*MxM}tS","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"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":114220,"triangles":2296,"vertices":6888,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0,-0.3499899378321694],"max":[0.6000000238418579,1.6100303817902057,0.42998995094519127]},"sizeMeters":[1.2,1.61,0.78],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:21:58.775Z","updatedAt":"2026-09-07T16:21:58.891Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16718/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ReceptionDeskModule1200PrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16718/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16718/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16718/v1/model.glb\" alt=\"Reception desk module 1200 (Primary Care Clinic and Veterinary Practice)\" 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/16718/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/16718/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16731","slug":"clinic-and-veterinary-practice-waiting-bench-5-seat-0695a546","title":"Waiting bench, five seat (Primary Care Clinic and Veterinary Practice)","summary":"A five-place version of the beam waiting bench on the same 560 mm place pitch, for a wider waiting room wall.","description":"A five-place version of the beam waiting bench on the same 560 mm place pitch, for a wider waiting room wall. Overall 2.83 by 0.90 by 0.49 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-waiting-bench-5-seat-0695a546","cdnUrl":"https://cdn.3dassets.dev/assets/16731/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-waiting-bench-5-seat-0695a546","thumbnailUrl":"https://cdn.3dassets.dev/assets/16731/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16731/v1/poster.webp","blurhash":"U78q+@tRMd%M.9?^RjMx00o}%#IU4T4TtStS","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":323912,"triangles":6680,"vertices":20040,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.4140000343322754,0.00007155009900355891,-0.2359615524072659],"max":[1.4140000343322754,0.8961664570069319,0.24996161762337685]},"sizeMeters":[2.828,0.896,0.486],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:00.679Z","updatedAt":"2026-09-07T16:22:00.821Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16731/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaitingBenchFiveSeatPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16731/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16731/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16731/v1/model.glb\" alt=\"Waiting bench, five seat (Primary Care Clinic and Veterinary Practice)\" 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/16731/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/16731/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16721","slug":"clinic-and-veterinary-practice-waiting-bench-3-seat-bef06621","title":"Waiting bench, three seat (Primary Care Clinic and Veterinary Practice)","summary":"A three-place waiting bench: a pressed steel beam on bent tube cantilever feet carrying piped wipe-clean seat pads, welted upright back pads on raked boards and tubular arms between the places.","description":"A three-place waiting bench: a pressed steel beam on bent tube cantilever feet carrying piped wipe-clean seat pads, welted upright back pads on raked boards and tubular arms between the places. Overall 1.71 by 0.90 by 0.49 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-waiting-bench-3-seat-bef06621","cdnUrl":"https://cdn.3dassets.dev/assets/16721/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-waiting-bench-3-seat-bef06621","thumbnailUrl":"https://cdn.3dassets.dev/assets/16721/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16721/v1/poster.webp","blurhash":"UAA1eRtRDOtR?w.8M_Mx00tR%gMwD4MdtStR","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":204872,"triangles":4200,"vertices":12600,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.8539999723434448,0.00004208774519648406,-0.23605083619234538],"max":[0.8539999723434448,0.8962679289841406,0.24995688549990286]},"sizeMeters":[1.708,0.896,0.486],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:21:59.854Z","updatedAt":"2026-09-07T16:21:59.945Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16721/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaitingBenchThreeSeatPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16721/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16721/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16721/v1/model.glb\" alt=\"Waiting bench, three seat (Primary Care Clinic and Veterinary Practice)\" 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/16721/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/16721/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16735","slug":"clinic-and-veterinary-practice-examination-couch-with--20a73e55","title":"Examination couch with steps (Primary Care Clinic and Veterinary Practice)","summary":"A panelled examination couch on a cupboard base with a drawer and plinth, a two-tread patient step drawn out at the foot end, a tubular grab rail on the far side and piped sectional pads.","description":"A panelled examination couch on a cupboard base with a drawer and plinth, a two-tread patient step drawn out at the foot end, a tubular grab rail on the far side and piped sectional pads. Overall 1.88 by 0.95 by 0.92 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The base drawer is a named node pivoted on its slide axis. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-examination-couch-with--20a73e55","cdnUrl":"https://cdn.3dassets.dev/assets/16735/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-examination-couch-with--20a73e55","thumbnailUrl":"https://cdn.3dassets.dev/assets/16735/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16735/v1/poster.webp","blurhash":"UAED0MkW00s.Fe_N?H4T00Nx.8$*Q-9ZE1%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":122216,"triangles":2416,"vertices":7248,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.949999988079071,-0.000009817741946555048,-0.3199450500191457],"max":[0.9300000071525574,0.9485118974389151,0.5999450810135609]},"sizeMeters":[1.88,0.949,0.92],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:02.268Z","updatedAt":"2026-09-07T16:22:02.369Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16735/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ExaminationCouchWithStepsPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16735/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16735/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16735/v1/model.glb\" alt=\"Examination couch with steps (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16735/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16735/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16737","slug":"clinic-and-veterinary-practice-clinician-desk-eca22374","title":"Clinician desk (Primary Care Clinic and Veterinary Practice)","summary":"A 1.4 m consulting desk: panel end frames, a postformed top with a cable grommet and an under-top cable tray, a modesty panel and a three-drawer pedestal.","description":"A 1.4 m consulting desk: panel end frames, a postformed top with a cable grommet and an under-top cable tray, a modesty panel and a three-drawer pedestal. Overall 1.40 by 0.75 by 0.74 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The three pedestal drawers are named nodes pivoted on their slide axes. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-clinician-desk-eca22374","cdnUrl":"https://cdn.3dassets.dev/assets/16737/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-clinician-desk-eca22374","thumbnailUrl":"https://cdn.3dassets.dev/assets/16737/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16737/v1/poster.webp","blurhash":"UOF62x-;9GIU~p%MIURj00Rjt6og4.oextM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":63384,"triangles":1444,"vertices":4332,"meshes":7,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.699999988079071,-0.000024701982384633947,-0.3600512649642831],"max":[0.699999988079071,0.751002715640019,0.3838386914420172]},"sizeMeters":[1.4,0.751,0.744],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:02.406Z","updatedAt":"2026-09-07T16:22:02.498Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16737/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ClinicianDeskPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16737/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16737/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16737/v1/model.glb\" alt=\"Clinician desk (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16737/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16737/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16740","slug":"clinic-and-veterinary-practice-patient-chair-e364bf45","title":"Patient chair (Primary Care Clinic and Veterinary Practice)","summary":"A four-leg patient chair with a tapered timber frame, open arms on turned supports, a piped seat pad and a welted upright back pad.","description":"A four-leg patient chair with a tapered timber frame, open arms on turned supports, a piped seat pad and a welted upright back pad. Overall 0.49 by 1.01 by 0.53 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-patient-chair-e364bf45","cdnUrl":"https://cdn.3dassets.dev/assets/16740/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-patient-chair-e364bf45","thumbnailUrl":"https://cdn.3dassets.dev/assets/16740/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16740/v1/poster.webp","blurhash":"U4CZkX?c00Q,P;9GQR?a00Di?v-;n2%MXURj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":97344,"triangles":1976,"vertices":5928,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.24501907344696397,0,-0.28046660338265744],"max":[0.24501907344696397,1.0077404975891113,0.24502916847092954]},"sizeMeters":[0.49,1.008,0.525],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:03.270Z","updatedAt":"2026-09-07T16:22:03.377Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16740/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PatientChairPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16740/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16740/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16740/v1/model.glb\" alt=\"Patient chair (Primary Care Clinic and Veterinary Practice)\" 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/16740/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/16740/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16834","slug":"clinic-and-veterinary-practice-clinical-hand-wash-basi-8eaa7002","title":"Clinical hand wash basin (Primary Care Clinic and Veterinary Practice)","summary":"A wall-hung clinical hand wash basin on floor-reaching mounting rails: a shaped deck with a real recessed bowl, a strainer waste and bottle trap, an elbow-lever mixer, a splashback and soap and paper towel dispensers.","description":"A wall-hung clinical hand wash basin on floor-reaching mounting rails: a shaped deck with a real recessed bowl, a strainer waste and bottle trap, an elbow-lever mixer, a splashback and soap and paper towel dispensers. Overall 0.79 by 1.50 by 0.47 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-clinical-hand-wash-basi-8eaa7002","cdnUrl":"https://cdn.3dassets.dev/assets/16834/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-clinical-hand-wash-basi-8eaa7002","thumbnailUrl":"https://cdn.3dassets.dev/assets/16834/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16834/v1/poster.webp","blurhash":"UBB:v#V[00xu?bxuD%IU00ay~qayR%M{Rj-;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":122552,"triangles":2484,"vertices":7452,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.314973906674398,0,-0.2595718103993123],"max":[0.46998504668162233,1.5,0.21003265343223335]},"sizeMeters":[0.785,1.5,0.47],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:27.394Z","updatedAt":"2026-09-07T16:22:27.499Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16834/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClinicalHandWashBasinPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16834/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16834/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16834/v1/model.glb\" alt=\"Clinical hand wash basin (Primary Care Clinic and Veterinary Practice)\" 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/16834/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/16834/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16744","slug":"clinic-and-veterinary-practice-cubicle-curtain-track-a05a94a2","title":"Cubicle curtain track and drape (Primary Care Clinic and Veterinary Practice)","summary":"A 2 m L-shaped cubicle curtain track with a return leg, end stops and drop rods, carrying a pleated drape on hooks with a perforated mesh head band.","description":"A 2 m L-shaped cubicle curtain track with a return leg, end stops and drop rods, carrying a pleated drape on hooks with a perforated mesh head band. Overall 2.00 by 2.23 by 1.05 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-cubicle-curtain-track-a05a94a2","cdnUrl":"https://cdn.3dassets.dev/assets/16744/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-cubicle-curtain-track-a05a94a2","thumbnailUrl":"https://cdn.3dassets.dev/assets/16744/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16744/v1/poster.webp","blurhash":"UKAnWC_ND4I9n4t7tlR%DOMxo}W;W=jbo0WU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":149368,"triangles":3058,"vertices":9174,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.000499963760376,0.000047112508430924294,-1.0220522077385614],"max":[1,2.230022499594562,0.0281885600371615]},"sizeMeters":[2,2.23,1.05],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:04.782Z","updatedAt":"2026-09-07T16:22:04.868Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16744/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CubicleCurtainTrackAndDrapePrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16744/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16744/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16744/v1/model.glb\" alt=\"Cubicle curtain track and drape (Primary Care Clinic and Veterinary Practice)\" 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/16744/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/16744/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16777","slug":"clinic-and-veterinary-practice-dispensing-counter-modu-c70fd044","title":"Dispensing counter module 600 (Primary Care Clinic and Veterinary Practice)","summary":"A 600 mm dispensing counter module on the counter-run grid: an 18 mm carcass on a recessed plinth with an internal shelf, a named cupboard door, a postformed 900 mm worktop and a bag rail on the front edge.","description":"A 600 mm dispensing counter module on the counter-run grid: an 18 mm carcass on a recessed plinth with an internal shelf, a named cupboard door, a postformed 900 mm worktop and a bag rail on the front edge. Overall 0.60 by 0.95 by 0.74 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Tiles along X on the 600 mm counter-run grid through counter-left and counter-right ports; the door is a named node pivoted on its hinge edge. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-dispensing-counter-modu-c70fd044","cdnUrl":"https://cdn.3dassets.dev/assets/16777/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-dispensing-counter-modu-c70fd044","thumbnailUrl":"https://cdn.3dassets.dev/assets/16777/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16777/v1/poster.webp","blurhash":"UEFr-N9F00jY~pIVD*xu00tR?bxutRofM_of","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"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":50808,"triangles":946,"vertices":2838,"meshes":6,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3020187942584877,0.000010680236977610169,-0.3499999940395355],"max":[0.3020187942584877,0.953003852548105,0.39396523400578987]},"sizeMeters":[0.604,0.953,0.744],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:12.462Z","updatedAt":"2026-09-07T16:22:12.557Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16777/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function DispensingCounterModule600PrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16777/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16777/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16777/v1/model.glb\" alt=\"Dispensing counter module 600 (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16777/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16777/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16776","slug":"clinic-and-veterinary-practice-dispensing-counter-draw-c4668283","title":"Dispensing counter module, four drawer (Primary Care Clinic and Veterinary Practice)","summary":"A 600 mm dispensing counter module with four named drawers on lipped fronts under a postformed worktop, on the same counter-run grid.","description":"A 600 mm dispensing counter module with four named drawers on lipped fronts under a postformed worktop, on the same counter-run grid. Overall 0.60 by 0.90 by 0.70 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. All four drawers are named nodes pivoted on their slide axes. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-dispensing-counter-draw-c4668283","cdnUrl":"https://cdn.3dassets.dev/assets/16776/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-dispensing-counter-draw-c4668283","thumbnailUrl":"https://cdn.3dassets.dev/assets/16776/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16776/v1/poster.webp","blurhash":"UHHxvi?b00M{~VWBE2t700IUt8s:%3ofIUV@","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"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":43684,"triangles":1240,"vertices":3720,"meshes":8,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3020187942584877,0.000010680236977610169,-0.3499999940395355],"max":[0.3020187942584877,0.8999957222997765,0.352996911714736]},"sizeMeters":[0.604,0.9,0.703],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:12.424Z","updatedAt":"2026-09-07T16:22:12.520Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16776/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function DispensingCounterModuleFourDrawerPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16776/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16776/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16776/v1/model.glb\" alt=\"Dispensing counter module, four drawer (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16776/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16776/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16778","slug":"clinic-and-veterinary-practice-dispensing-shelving-f439340f","title":"Dispensing shelving (Primary Care Clinic and Veterinary Practice)","summary":"A 900 mm dispensing shelving unit: five raked tilt shelves with front retaining lips and vertical dividers, carrying blank cartons, on a panelled back.","description":"A 900 mm dispensing shelving unit: five raked tilt shelves with front retaining lips and vertical dividers, carrying blank cartons, on a panelled back. Overall 0.90 by 1.50 by 0.32 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-dispensing-shelving-f439340f","cdnUrl":"https://cdn.3dassets.dev/assets/16778/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-dispensing-shelving-f439340f","thumbnailUrl":"https://cdn.3dassets.dev/assets/16778/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16778/v1/poster.webp","blurhash":"U9FPEH%M00M}~q-;9F4n4oj]-oRj?b%MIU9F","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":122720,"triangles":3136,"vertices":9408,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.45004119998779263,0,-0.1599475081637013],"max":[0.45004119998779263,1.5,0.1599475081637013]},"sizeMeters":[0.9,1.5,0.32],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:13.731Z","updatedAt":"2026-09-07T16:22:13.822Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16778/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DispensingShelvingPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16778/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16778/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16778/v1/model.glb\" alt=\"Dispensing shelving (Primary Care Clinic and Veterinary Practice)\" 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/16778/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/16778/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16783","slug":"clinic-and-veterinary-practice-vaccine-fridge-logger-31a34cee","title":"Vaccine fridge with data logger (Primary Care Clinic and Veterinary Practice)","summary":"A tall solid-door vaccine refrigerator: five stocked shelves, a sealed insulated door on a gasket, a digital controller, a data logger head on the cabinet top with a probe cable and a temperature chart holder on the flank.","description":"A tall solid-door vaccine refrigerator: five stocked shelves, a sealed insulated door on a gasket, a digital controller, a data logger head on the cabinet top with a probe cable and a temperature chart holder on the flank. Overall 0.69 by 1.96 by 0.75 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The insulated door is a named node pivoted on its hinge edge. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-vaccine-fridge-logger-31a34cee","cdnUrl":"https://cdn.3dassets.dev/assets/16783/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-vaccine-fridge-logger-31a34cee","thumbnailUrl":"https://cdn.3dassets.dev/assets/16783/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16783/v1/poster.webp","blurhash":"U6EMLD4U00~q?IWBD%s;00xu~qNFxuj[Rjj[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":146764,"triangles":2916,"vertices":8748,"meshes":8,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3559502309693202,0,-0.33004334601811114],"max":[0.33000642843969463,1.9560214281082153,0.41998234931248474]},"sizeMeters":[0.686,1.956,0.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:14.265Z","updatedAt":"2026-09-07T16:22:14.359Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16783/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function VaccineFridgeWithDataLoggerPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16783/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16783/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16783/v1/model.glb\" alt=\"Vaccine fridge with data logger (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16783/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16783/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16780","slug":"clinic-and-veterinary-practice-controlled-drug-cabinet-638b7c11","title":"Controlled drug cabinet (Primary Care Clinic and Veterinary Practice)","summary":"A wall-mounted controlled drug cabinet on two floor-reaching mounting rails: a welded steel case with two shelves, stock boxes and a register book, and a heavy door with two lock escutcheons, a lever handle and a piano hinge.","description":"A wall-mounted controlled drug cabinet on two floor-reaching mounting rails: a welded steel case with two shelves, stock boxes and a register book, and a heavy door with two lock escutcheons, a lever handle and a piano hinge. Overall 0.59 by 1.72 by 0.39 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The door and its lock furniture are named nodes pivoted on the hinge edge. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-controlled-drug-cabinet-638b7c11","cdnUrl":"https://cdn.3dassets.dev/assets/16780/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-controlled-drug-cabinet-638b7c11","thumbnailUrl":"https://cdn.3dassets.dev/assets/16780/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16780/v1/poster.webp","blurhash":"UBAAaaD%00~q-;j@IUWB9Fxu-;D%-;WBD%xu","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":99692,"triangles":1948,"vertices":5844,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.2950303708244208,0,-0.1949460873445448],"max":[0.2950303708244208,1.7200000286102295,0.19498967722480498]},"sizeMeters":[0.59,1.72,0.39],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:12.937Z","updatedAt":"2026-09-07T16:22:13.061Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16780/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ControlledDrugCabinetPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16780/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16780/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16780/v1/model.glb\" alt=\"Controlled drug cabinet (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16780/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16780/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16792","slug":"clinic-and-veterinary-practice-vet-examination-table-0e78660b","title":"Veterinary examination table, raised (Primary Care Clinic and Veterinary Practice)","summary":"A hydraulic veterinary examination table at working height: a stainless base plate on levelling pads with a foot pedal bar, a two-stage telescopic column with a bellows band, a pressed deck with a raised lip, a ribbed rubber mat and two tie-down rings.","description":"A hydraulic veterinary examination table at working height: a stainless base plate on levelling pads with a foot pedal bar, a two-stage telescopic column with a bellows band, a pressed deck with a raised lip, a ribbed rubber mat and two tie-down rings. Overall 1.20 by 0.97 by 0.62 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-vet-examination-table-0e78660b","cdnUrl":"https://cdn.3dassets.dev/assets/16792/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-vet-examination-table-0e78660b","thumbnailUrl":"https://cdn.3dassets.dev/assets/16792/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16792/v1/poster.webp","blurhash":"U7A,%w-;00R*_4-;xtM{ba%Mt7kB-=-;ITM_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":147716,"triangles":3024,"vertices":9072,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000045039638534527526,-0.31000703157575166],"max":[0.6000000238418579,0.9670084244193464,0.31000703157575166]},"sizeMeters":[1.2,0.967,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:18.144Z","updatedAt":"2026-09-07T16:22:18.260Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16792/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function VeterinaryExaminationTableRaisedPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16792/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16792/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16792/v1/model.glb\" alt=\"Veterinary examination table, raised (Primary Care Clinic and Veterinary Practice)\" 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/16792/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/16792/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16793","slug":"clinic-and-veterinary-practice-prep-induction-bench-c1c53861","title":"Prep and induction bench (Primary Care Clinic and Veterinary Practice)","summary":"A 1.5 m stainless prep bench: a tubular frame with an undershelf, a folded top with an upstand, a heated pad with a lead, a drip rail on posts with four hooks, a monitor on a rail shelf and two named slung drawers.","description":"A 1.5 m stainless prep bench: a tubular frame with an undershelf, a folded top with an upstand, a heated pad with a lead, a drip rail on posts with four hooks, a monitor on a rail shelf and two named slung drawers. Overall 1.51 by 1.56 by 0.75 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The two slung drawers are named nodes pivoted on their slide axes. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-prep-induction-bench-c1c53861","cdnUrl":"https://cdn.3dassets.dev/assets/16793/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-prep-induction-bench-c1c53861","thumbnailUrl":"https://cdn.3dassets.dev/assets/16793/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16793/v1/poster.webp","blurhash":"UABzLVR*00%2x[ofRQRP00V@_NozMxoLbbR*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":113384,"triangles":2374,"vertices":7122,"meshes":6,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.7560050993794891,0,-0.3559959952071162],"max":[0.7560050993794891,1.559999942779541,0.3988451127760767]},"sizeMeters":[1.512,1.56,0.755],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:18.239Z","updatedAt":"2026-09-07T16:22:18.368Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16793/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function PrepAndInductionBenchPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16793/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16793/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16793/v1/model.glb\" alt=\"Prep and induction bench (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16793/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16793/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16770","slug":"clinic-and-veterinary-practice-instrument-cabinet-98ec2833","title":"Instrument cabinet (Primary Care Clinic and Veterinary Practice)","summary":"A tall instrument cabinet: an 18 mm carcass on a recessed plinth with two named glazed doors over three glass shelves of trays, and two named drawers below.","description":"A tall instrument cabinet: an 18 mm carcass on a recessed plinth with two named glazed doors over three glass shelves of trays, and two named drawers below. Overall 0.90 by 1.85 by 0.49 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Both glazed doors and both drawers are named nodes pivoted on their hinge and slide axes. Rigid node-transform clips: drawer-open, drawer-close, door-open and door-close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-instrument-cabinet-98ec2833","cdnUrl":"https://cdn.3dassets.dev/assets/16770/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-instrument-cabinet-98ec2833","thumbnailUrl":"https://cdn.3dassets.dev/assets/16770/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16770/v1/poster.webp","blurhash":"UCFr@f-q00IU~qxu9FIU00WB.8kC?bt7D%M{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":185724,"triangles":4184,"vertices":12552,"meshes":12,"materials":4,"textures":0,"animations":["drawer-open","drawer-close","door-open","door-close"],"boundingBox":{"min":[-0.45006409461830893,0.000010683547639354918,-0.2099978663865184],"max":[0.45006409461830893,1.850000023841858,0.2819739759800908]},"sizeMeters":[0.9,1.85,0.492],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:10.705Z","updatedAt":"2026-09-07T16:22:10.824Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16770/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function InstrumentCabinetPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16770/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16770/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16770/v1/model.glb\" alt=\"Instrument cabinet (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16770/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16770/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16751","slug":"clinic-and-veterinary-practice-treatment-trolley-b5ff1ad0","title":"Treatment trolley (Primary Care Clinic and Veterinary Practice)","summary":"A three-deck stainless treatment trolley on braked swivel castors: tubular corner posts, pressed lipped decks, a slung drawer, a back rail, an instrument tray and a sharps container on an end cradle.","description":"A three-deck stainless treatment trolley on braked swivel castors: tubular corner posts, pressed lipped decks, a slung drawer, a back rail, an instrument tray and a sharps container on an end cradle. Overall 0.87 by 1.05 by 0.54 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The slung drawer is a named node pivoted on its slide axis. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-treatment-trolley-b5ff1ad0","cdnUrl":"https://cdn.3dassets.dev/assets/16751/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-treatment-trolley-b5ff1ad0","thumbnailUrl":"https://cdn.3dassets.dev/assets/16751/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16751/v1/poster.webp","blurhash":"U9B3]A%N00M_~qxu9FIU00t2~qIpD*xt%MM|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":179028,"triangles":3648,"vertices":10944,"meshes":4,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3934549084961563,0,-0.25280568652598756],"max":[0.4799867264092117,1.0540000200271606,0.2889042991205309]},"sizeMeters":[0.873,1.054,0.542],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:06.440Z","updatedAt":"2026-09-07T16:22:06.536Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16751/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function TreatmentTrolleyPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16751/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16751/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16751/v1/model.glb\" alt=\"Treatment trolley (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16751/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16751/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16760","slug":"clinic-and-veterinary-practice-iv-stand-0309e53f","title":"IV drip stand (Primary Care Clinic and Veterinary Practice)","summary":"A five-leg castor IV stand: a telescopic pole with a collar, a four-hook head and a hung giving set with a drip chamber and line.","description":"A five-leg castor IV stand: a telescopic pole with a collar, a four-hook head and a hung giving set with a drip chamber and line. Overall 0.49 by 1.64 by 0.54 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-iv-stand-0309e53f","cdnUrl":"https://cdn.3dassets.dev/assets/16760/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-iv-stand-0309e53f","thumbnailUrl":"https://cdn.3dassets.dev/assets/16760/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16760/v1/poster.webp","blurhash":"U15r0#%M004n?bR*9Fxa_3of8_Rj9Fxu.8D%","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":58724,"triangles":1172,"vertices":3516,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.22231037442824497,0,-0.268255240551505],"max":[0.2719659758105005,1.6399999856948853,0.268255240551505]},"sizeMeters":[0.494,1.64,0.537],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:08.455Z","updatedAt":"2026-09-07T16:22:08.544Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16760/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function IVDripStandPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/16760/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16760/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16760/v1/model.glb\" alt=\"IV drip stand (Primary Care Clinic and Veterinary Practice)\" 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/16760/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/16760/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"16808","slug":"clinic-and-veterinary-practice-kennel-bank-medium-21ab23fa","title":"Kennel bank, medium, four bay (Primary Care Clinic and Veterinary Practice)","summary":"A 1.35 m kennel bank of four medium bays in two tiers on the same shell and bank grid, with wider grille doors, sloped trays and cam latches.","description":"A 1.35 m kennel bank of four medium bays in two tiers on the same shell and bank grid, with wider grille doors, sloped trays and cam latches. Overall 1.35 by 1.50 by 0.85 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Tiles along X on the 1.35 m bank grid; all four doors are named nodes pivoted on their hinge edges. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-kennel-bank-medium-21ab23fa","cdnUrl":"https://cdn.3dassets.dev/assets/16808/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-kennel-bank-medium-21ab23fa","thumbnailUrl":"https://cdn.3dassets.dev/assets/16808/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16808/v1/poster.webp","blurhash":"UGCZhXe.00Rj~qWVD$j[t7juM{fk%Mt7M{M{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"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":117576,"triangles":4320,"vertices":12960,"meshes":14,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6749939234412791,0.000008541905793933713,-0.4000442109168236],"max":[0.6749939234412791,1.5,0.4470012269334193]},"sizeMeters":[1.35,1.5,0.847],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:21.747Z","updatedAt":"2026-09-07T16:22:21.882Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16808/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function KennelBankMediumFourBayPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16808/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16808/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16808/v1/model.glb\" alt=\"Kennel bank, medium, four bay (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16808/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16808/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16807","slug":"clinic-and-veterinary-practice-kennel-bank-small-a20c2524","title":"Kennel bank, small, six bay (Primary Care Clinic and Veterinary Practice)","summary":"A 1.35 m stainless kennel bank of six small bays in two tiers: a chamfered shell on a coved recessed plinth, sloped floor trays with drain lips, bay dividers and one named bar grille door per bay on knuckle hinges with a cam latch and a blank name card.","description":"A 1.35 m stainless kennel bank of six small bays in two tiers: a chamfered shell on a coved recessed plinth, sloped floor trays with drain lips, bay dividers and one named bar grille door per bay on knuckle hinges with a cam latch and a blank name card. Overall 1.35 by 1.50 by 0.85 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Tiles along X on the 1.35 m bank grid through bank-left and bank-right ports; all six doors are named nodes pivoted on their hinge edges. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-kennel-bank-small-a20c2524","cdnUrl":"https://cdn.3dassets.dev/assets/16807/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-kennel-bank-small-a20c2524","thumbnailUrl":"https://cdn.3dassets.dev/assets/16807/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16807/v1/poster.webp","blurhash":"UGCP^qt700WB~qj]DiWBt7fjM_juxut8RjM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"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":131312,"triangles":5608,"vertices":16824,"meshes":18,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6749939234412791,0.000008541905793933713,-0.4000442109168236],"max":[0.6749939234412791,1.5,0.4470012269334193]},"sizeMeters":[1.35,1.5,0.847],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:20.675Z","updatedAt":"2026-09-07T16:22:20.773Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16807/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function KennelBankSmallSixBayPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16807/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16807/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16807/v1/model.glb\" alt=\"Kennel bank, small, six bay (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16807/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16807/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16809","slug":"clinic-and-veterinary-practice-kennel-bank-large-45e15996","title":"Kennel bank, large, two bay (Primary Care Clinic and Veterinary Practice)","summary":"A 1.35 m kennel bank of two full-height large bays for dogs: the same shell and plinth at 1.65 m with tall grille doors, sloped floor trays and cam latches.","description":"A 1.35 m kennel bank of two full-height large bays for dogs: the same shell and plinth at 1.65 m with tall grille doors, sloped floor trays and cam latches. Overall 1.35 by 1.65 by 0.85 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. Tiles along X on the 1.35 m bank grid; both doors are named nodes pivoted on their hinge edges. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-kennel-bank-large-45e15996","cdnUrl":"https://cdn.3dassets.dev/assets/16809/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-kennel-bank-large-45e15996","thumbnailUrl":"https://cdn.3dassets.dev/assets/16809/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16809/v1/poster.webp","blurhash":"UFB:y?of00Rj_4WBD%t6%NofITRj%Nt8M_M_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"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":80976,"triangles":2336,"vertices":7008,"meshes":8,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6750152341222905,0.000008541905793933713,-0.400003136426486],"max":[0.6750152341222905,1.649999976158142,0.4470012269334193]},"sizeMeters":[1.35,1.65,0.847],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:22.081Z","updatedAt":"2026-09-07T16:22:22.185Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16809/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function KennelBankLargeTwoBayPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16809/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16809/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16809/v1/model.glb\" alt=\"Kennel bank, large, two bay (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16809/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16809/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"16797","slug":"clinic-and-veterinary-practice-grooming-bath-114d778e","title":"Grooming bath with ramp (Primary Care Clinic and Veterinary Practice)","summary":"A raised stainless grooming bath: a panelled plinth, a deep pressed tub with a slatted floor grid and a strainer waste, a splashback with a mixer and a spray head on a hook, a named fold-down entry ramp and a matted step.","description":"A raised stainless grooming bath: a panelled plinth, a deep pressed tub with a slatted floor grid and a strainer waste, a splashback with a mixer and a spray head on a hook, a named fold-down entry ramp and a matted step. Overall 1.36 by 1.44 by 1.17 m (X by Y by Z). Metre units, +Y up, the side a person uses toward +Z, resting on y=0. The entry ramp is a named node pivoted on its bottom hinge and is shown folded down. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/clinic-and-veterinary-practice-grooming-bath-114d778e","cdnUrl":"https://cdn.3dassets.dev/assets/16797/v1/model.glb","downloadUrl":"https://3dassets.dev/download/clinic-and-veterinary-practice-grooming-bath-114d778e","thumbnailUrl":"https://cdn.3dassets.dev/assets/16797/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/16797/v1/poster.webp","blurhash":"UAD9*W4m00?bD%s:xaIU00Rkt7-;~qM{IU-;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"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":198024,"triangles":4028,"vertices":12084,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6809999942779541,0.000027567496234615074,-0.36603985541063383],"max":[0.6809999942779541,1.4415569050708157,0.8033624167650188]},"sizeMeters":[1.362,1.442,1.169],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T16:22:18.575Z","updatedAt":"2026-09-07T16:22:18.689Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/16797/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function GroomingBathWithRampPrimaryCareClinicAndVeterinaryPractice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/16797/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/16797/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/16797/v1/model.glb\" alt=\"Grooming bath with ramp (Primary Care Clinic and Veterinary Practice)\" camera-controls auto-rotate autoplay></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/16797/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","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)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","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/16797/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}]}}