{"data":{"id":"95","slug":"pet-shop-and-grooming-salon","title":"Pet Shop and Grooming Salon","summary":"Walk a pet shop: stocked gondola runs, an accessory rail, empty aquarium and habitat displays, the till by the door, and a grooming salon with a table, bath and drying cages behind.","url":"https://3dassets.dev/demos/pet-shop-and-grooming-salon","coverUrl":"https://cdn.3dassets.dev/media/pet-shop-and-grooming-salon-demo.png","featured":true,"pack":{"slug":"pet-shop-and-grooming-salon","title":"Pet Shop and Grooming Salon","url":"https://3dassets.dev/packs/pet-shop-and-grooming-salon","summary":"A modern pet shop fit out with the grooming salon behind it: a ported gondola run stocked with food, wall shelving, freezer, bulk bins, till and signage, empty aquarium, habitat and vivarium fixtures, and the grooming table, bath, drying cages and tools.","assetCount":39,"totalBytes":9253612,"starterScene":{"slug":"pet-shop-and-grooming-salon-pet-shop-and-61b4cc32-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/34605/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-pet-shop-and-61b4cc32-starter-scene","fileSize":4304412}},"placementCount":89,"assetCount":37,"spawn":{"position":[-1.5,0.02,4.1],"yaw":173.5},"publishedAt":"2026-09-11T09:27:33.265Z","updatedAt":"2026-09-11T09:27:33.266Z","description":"A pet shop fit out and the grooming salon behind it, built from the pack's ported gondola, shelving, wall and floor modules.\n\n**What is placed.** Gondola runs stocked with food bags and tins go down the middle of the shop with end caps, wall shelving bays, the toy bin display and the accessory rail of leads and collars along the sides. The chest freezer and the bulk dispenser bins sit at the back, the aquarium display rack, small animal habitat units, bird cage and vivarium stack line the other wall, and the till counter with its card reader and impulse display, the basket stack, a trolley and the queue rail stand by the door with a dressed window platform. Through the wall the grooming salon holds the table with its hydraulic post and restraint arm, the bath with its ramp and shower arm, the drying cage bank, the stand dryer, the clipper, brush and scissors trays, the towel shelf, the apron rail, the hair trap grate and the cleaning trolley.\n\n**What moves.** The shop, vivarium and drying cage doors open and close, the freezer lid lifts, the dispenser flaps open, the till drawer pulls out, the grooming table post lifts, the shower arm tilts and the trolleys and dryer roll on their castors.\n\n**What does not move, and why.** Leads, hoses, cables, cloth and water are static geometry: none is reachable with the rigid node transforms this library uses. There are no animals anywhere in this pack, and no staff or customers: all housing ships empty, and nothing here is skinned.","scene":{"version":1,"spawn":{"position":[-1.5,0.02,4.1],"yaw":173.5},"ground":{"style":"none"},"environment":{"preset":"room","wallHeight":3.4,"lampHeight":3,"shadows":true},"placements":[{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[-3,0,3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[-3,0,2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[-3,0,0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[-3,0,-0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[-3,0,-2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[-3,0,-3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[-1.5,0,3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[-1.5,0,2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[-1.5,0,0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[-1.5,0,-0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[-1.5,0,-2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[-1.5,0,-3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[0,0,3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[0,0,2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[0,0,0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[0,0,-0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[0,0,-2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[0,0,-3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[1.5,0,3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[1.5,0,2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[1.5,0,0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[1.5,0,-0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[1.5,0,-2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[1.5,0,-3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[3,0,3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[3,0,2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","position":[3,0,0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[3,0,-0.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[3,0,-2.25],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","position":[3,0,-3.75],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","position":[-1.5,0.04,4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-door-module-64e55a99","position":[0,0.04,4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","position":[-3,0.04,0],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-door-module-64e55a99","position":[-1.5,0.04,0],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","position":[0,0.04,0],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[-3,0.04,-4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[-1.5,0.04,-4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[0,0.04,-4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[1.5,0.04,-4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[3,0.04,-4.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","position":[-3.75,0.04,3.75],"rotation":90},{"asset":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","position":[-3.75,0.04,2.25],"rotation":90},{"asset":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","position":[-3.75,0.04,0.75],"rotation":90},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[-3.75,0.04,-0.75],"rotation":90},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[-3.75,0.04,-2.25],"rotation":90},{"asset":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","position":[-3.75,0.04,-3.75],"rotation":90},{"asset":"pet-shop-and-grooming-salon-gondola-shelving-unit-f56a7fe6","position":[-1.25,0.04,1.9],"rotation":0},{"asset":"pet-shop-and-grooming-salon-gondola-toy-and-accessory--6bd8b0f6","position":[0,0.04,1.9],"rotation":0},{"asset":"pet-shop-and-grooming-salon-gondola-shelving-unit-f56a7fe6","position":[1.25,0.04,1.9],"rotation":0},{"asset":"pet-shop-and-grooming-salon-gondola-end-cap-150d2b6e","position":[2.05,0.04,1.9],"rotation":-90},{"asset":"pet-shop-and-grooming-salon-price-sign-set-fe0346b2","position":[-2.3,0.04,1.9],"rotation":0},{"asset":"pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","position":[-3.48,0.04,2.8],"rotation":90},{"asset":"pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","position":[-3.48,0.04,1.8],"rotation":90},{"asset":"pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","position":[-3.48,0.04,0.8],"rotation":90},{"asset":"pet-shop-and-grooming-salon-accessory-rail-4ada6ffa","position":[-3.45,0.04,3.7],"rotation":90},{"asset":"pet-shop-and-grooming-salon-aquarium-display-rack-a0c91d77","position":[3,0.04,1.2],"rotation":0},{"asset":"pet-shop-and-grooming-salon-reptile-vivarium-stack-4161a3c7","position":[3,0.04,2.65],"rotation":0},{"asset":"pet-shop-and-grooming-salon-small-animal-habitat-unit-83d6bc77","position":[2.55,0.04,3.4],"rotation":0},{"asset":"pet-shop-and-grooming-salon-bird-cage-and-stand-44c8fd9f","position":[1.1,0.04,3.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-chest-freezer-352e154b","position":[-2.45,0.04,0.5],"rotation":0},{"asset":"pet-shop-and-grooming-salon-bulk-food-dispenser-bank-4b1fb48d","position":[-0.75,0.04,0.35],"rotation":0},{"asset":"pet-shop-and-grooming-salon-feed-bin-and-scoop-set-cd856265","position":[0.9,0.04,0.45],"rotation":0},{"asset":"pet-shop-and-grooming-salon-bedding-bale-stack-cf3fb26c","position":[2.3,0.04,0.55],"rotation":0},{"asset":"pet-shop-and-grooming-salon-till-counter-9b1e1036","position":[-2.85,0.04,3.7],"rotation":0},{"asset":"pet-shop-and-grooming-salon-queue-rail-8a72ff96","position":[-2.85,0.04,3],"rotation":0},{"asset":"pet-shop-and-grooming-salon-basket-stack-74018424","position":[-0.9,0.04,3.95],"rotation":0},{"asset":"pet-shop-and-grooming-salon-shopping-trolley-480bd2ad","position":[0.3,0.04,4.05],"rotation":17.19},{"asset":"pet-shop-and-grooming-salon-shopping-trolley-480bd2ad","position":[3.05,0.04,3.95],"rotation":-22.92},{"asset":"pet-shop-and-grooming-salon-toy-bin-display-25843f02","position":[-1.05,0.04,3.2],"rotation":0},{"asset":"pet-shop-and-grooming-salon-window-display-platform-e2a5ffba","position":[1.9,0.04,4.05],"rotation":0},{"asset":"pet-shop-and-grooming-salon-price-sign-set-fe0346b2","position":[0.55,0.04,3],"rotation":0},{"asset":"pet-shop-and-grooming-salon-pedal-waste-bin-4ec1847f","position":[3.4,0.04,0.2],"rotation":0},{"asset":"pet-shop-and-grooming-salon-drying-cage-bank-e9aee837","position":[1.5,0.04,-4.02],"rotation":0},{"asset":"pet-shop-and-grooming-salon-drying-cage-bank-e9aee837","position":[2.4,0.04,-4.02],"rotation":0},{"asset":"pet-shop-and-grooming-salon-drying-cage-bank-e9aee837","position":[3.3,0.04,-4.02],"rotation":0},{"asset":"pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","position":[-2.9,0.04,-4.23],"rotation":0},{"asset":"pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","position":[-1.9,0.04,-4.23],"rotation":0},{"asset":"pet-shop-and-grooming-salon-towel-shelf-37d778c4","position":[-0.9,0.04,-4.2],"rotation":0},{"asset":"pet-shop-and-grooming-salon-grooming-scissors-roll-e6502c1d","position":[-0.9,0.5860000000000001,-4.2],"rotation":0},{"asset":"pet-shop-and-grooming-salon-grooming-table-c57c0c75","position":[2.2,0.04,-1.6],"rotation":0},{"asset":"pet-shop-and-grooming-salon-clipper-and-blade-tray-d13f910d","position":[2.2,0.732,-1.74],"rotation":0},{"asset":"pet-shop-and-grooming-salon-dog-bath-tub-f17b5157","position":[0.4,0.04,-2.9],"rotation":0},{"asset":"pet-shop-and-grooming-salon-stand-dryer-0bd19a53","position":[3.2,0.04,-2.6],"rotation":28.65},{"asset":"pet-shop-and-grooming-salon-cleaning-trolley-7fc8d8ea","position":[1,0.04,-1],"rotation":0},{"asset":"pet-shop-and-grooming-salon-brush-and-comb-tray-c94bf36c","position":[1,0.98,-1],"rotation":0},{"asset":"pet-shop-and-grooming-salon-apron-hook-rail-5f7f5e52","position":[-3.62,1.24,-3.2],"rotation":90},{"asset":"pet-shop-and-grooming-salon-pedal-waste-bin-4ec1847f","position":[3.4,0.04,-0.6],"rotation":0},{"asset":"pet-shop-and-grooming-salon-hair-trap-floor-grate-db7577ff","position":[-0.6,0.04,-2.6],"rotation":0},{"asset":"pet-shop-and-grooming-salon-hair-trap-floor-grate-db7577ff","position":[2.2,0.04,-0.7],"rotation":0}],"points":[{"position":[-0.25,0.02,3.3],"title":"The shop floor","text":"Gondola runs stocked with food bags and tins repeat on their ports, with end caps, wall shelving, the toy bin and the accessory rail of leads and collars.","asset":"pet-shop-and-grooming-salon-gondola-shelving-unit-f56a7fe6"},{"position":[-1.45,0.02,1.9],"title":"Chilled and bulk","text":"The chest freezer for raw food with a lid that lifts, and the bulk dispenser bins whose flaps open.","asset":"pet-shop-and-grooming-salon-chest-freezer-352e154b"},{"position":[4,0.02,2.6],"title":"Empty housing","text":"The aquarium rack, habitat units, bird cage and vivarium stack all ship empty and unheated. There are no animals anywhere in this pack: the catalogue carries those separately.","asset":"pet-shop-and-grooming-salon-aquarium-display-rack-a0c91d77"},{"position":[-1.85,0.02,5.1],"title":"The till","text":"The till counter with its card reader and impulse display, the basket stack, the trolley and the queue rail by the door.","asset":"pet-shop-and-grooming-salon-till-counter-9b1e1036"},{"position":[3.2,0.02,-0.2],"title":"The salon","text":"The grooming table with its hydraulic post that lifts and a restraint arm, the bath with its ramp and shower arm, and the tool trays of clippers, brushes and scissors.","asset":"pet-shop-and-grooming-salon-grooming-table-c57c0c75"},{"position":[2.5,0.02,-2.62],"title":"Drying and cleaning","text":"The drying cage bank whose doors open, the stand dryer on wheels, the towel shelf, the apron rail, the hair trap grate and the cleaning trolley.","asset":"pet-shop-and-grooming-salon-drying-cage-bank-e9aee837"}],"poster":{"position":[0.6,2.2,3.1],"lookAt":[-2.4,0.5,0.5]}},"bounds":{"min":[-5.823028962532915,0,-6.573028962532915],"max":[6,4.839999952316284,7.1]},"assets":[{"id":"34581","slug":"pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","title":"Shop floor tile (Pet Shop and Grooming Salon)","summary":"A 1.5 m square of grey safety floor on the same grid as the walls, with proud welded seams and a centre panel so a field of them reads as laid floor rather than one flat plane.","description":"A 1.5 m square of grey safety floor on the same grid as the walls, with proud welded seams and a centre panel so a field of them reads as laid floor rather than one flat plane. Dimensions 1.50 by 0.05 by 1.50 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: tile-left, tile-right, tile-front, tile-back (type shop-floor). Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","cdnUrl":"https://cdn.3dassets.dev/assets/34581/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-shop-floor-tile-d0b57ddc","thumbnailUrl":"https://cdn.3dassets.dev/assets/34581/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34581/v1/poster.webp","blurhash":"U4BN1h?b00xuxuWUaxjc00D%~qMxIUs;RjW-","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":7228,"triangles":124,"vertices":282,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.000040894355662998705,-0.75],"max":[0.75,0.045963468886410494,0.75]},"sizeMeters":[1.5,0.046,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:01.994Z","updatedAt":"2026-09-11T09:26:02.146Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34581/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopFloorTilePetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34581/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34581/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34581/v1/model.glb\" alt=\"Shop floor tile (Pet Shop and Grooming Salon)\" 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/34581/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/34581/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34604","slug":"pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","title":"Salon floor tile (Pet Shop and Grooming Salon)","summary":"The same floor tile in the paler non slip grey of a wet room, with teal welded seams, so the salon floor reads apart from the shop floor. Geometry and ports are identical.","description":"The same floor tile in the paler non slip grey of a wet room, with teal welded seams, so the salon floor reads apart from the shop floor. Geometry and ports are identical. Dimensions 1.50 by 0.05 by 1.50 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: tile-left, tile-right, tile-front, tile-back (type shop-floor). Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","cdnUrl":"https://cdn.3dassets.dev/assets/34604/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-salon-floor-tile-ee067d7d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34604/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34604/v1/poster.webp","blurhash":"U7CGof%N00oItmWCadof00IU_NRkMJs:WrRj","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":7236,"triangles":124,"vertices":282,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.000040894355662998705,-0.75],"max":[0.75,0.045963468886410494,0.75]},"sizeMeters":[1.5,0.046,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:14.041Z","updatedAt":"2026-09-11T09:26:14.311Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34604/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SalonFloorTilePetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34604/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34604/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34604/v1/model.glb\" alt=\"Salon floor tile (Pet Shop and Grooming Salon)\" 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/34604/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/34604/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34582","slug":"pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","title":"Shop wall panel module (Pet Shop and Grooming Salon)","summary":"The 1.5 m by 2.8 m shop wall: painted boarding on both faces with proud joint battens and a rail, a coved skirting, a teal dado band and a capping bead. Couple them on their stiles for a shop, a salon or a partition.","description":"The 1.5 m by 2.8 m shop wall: painted boarding on both faces with proud joint battens and a rail, a coved skirting, a teal dado band and a capping bead. Couple them on their stiles for a shop, a salon or a partition. Dimensions 1.50 by 2.80 by 0.15 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: wall-left, wall-right (type shop-wall). Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","cdnUrl":"https://cdn.3dassets.dev/assets/34582/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-shop-wall-panel-module-b2282259","thumbnailUrl":"https://cdn.3dassets.dev/assets/34582/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34582/v1/poster.webp","blurhash":"U7FPKZ-=004n^+%MD%4n00V@_Nozx]xuM{D%","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":32688,"triangles":688,"vertices":1555,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500106687057108,-0.00002579094089048828,-0.07302896253291451],"max":[0.7500106687057108,2.799999952316284,0.07302896253291451]},"sizeMeters":[1.5,2.8,0.146],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:02.372Z","updatedAt":"2026-09-11T09:26:02.496Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34582/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShopWallPanelModulePetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34582/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34582/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34582/v1/model.glb\" alt=\"Shop wall panel module (Pet Shop and Grooming Salon)\" 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/34582/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/34582/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34583","slug":"pet-shop-and-grooming-salon-shop-door-module-64e55a99","title":"Shop door module (Pet Shop and Grooming Salon)","summary":"A 1.5 m wall module with a half glazed teal door on a real hinge, a stainless threshold, an amber head band, a transom light and a lined opening. Couple it into a run for the shop entrance or the door through to the salon.","description":"A 1.5 m wall module with a half glazed teal door on a real hinge, a stainless threshold, an amber head band, a transom light and a lined opening. Couple it into a run for the shop entrance or the door through to the salon. Dimensions 1.50 by 2.80 by 0.15 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: shop-door. Connectors: wall-left, wall-right (type shop-wall). Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-shop-door-module-64e55a99","cdnUrl":"https://cdn.3dassets.dev/assets/34583/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-shop-door-module-64e55a99","thumbnailUrl":"https://cdn.3dassets.dev/assets/34583/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34583/v1/poster.webp","blurhash":"U9D,J[D%00-;~Wxu4oD%DOt7k;Rkxut7RQIU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"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":66340,"triangles":1456,"vertices":3260,"meshes":10,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.7500106687057108,0,-0.07696768089846492],"max":[0.7500106687057108,2.799999952316284,0.07696768089846492]},"sizeMeters":[1.5,2.8,0.154],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:03.169Z","updatedAt":"2026-09-11T09:26:03.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/34583/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 ShopDoorModulePetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34583/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/34583/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34583/v1/model.glb\" alt=\"Shop door module (Pet Shop and Grooming Salon)\" 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/34583/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/34583/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34603","slug":"pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","title":"Salon wall panel module (Pet Shop and Grooming Salon)","summary":"The same wall module in the washable grey boarding a wet salon is lined with, keeping the teal dado band. Geometry and ports are identical to the shop panel.","description":"The same wall module in the washable grey boarding a wet salon is lined with, keeping the teal dado band. Geometry and ports are identical to the shop panel. Dimensions 1.50 by 2.80 by 0.15 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: wall-left, wall-right (type shop-wall). Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","cdnUrl":"https://cdn.3dassets.dev/assets/34603/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-salon-wall-panel-module-74f2ea94","thumbnailUrl":"https://cdn.3dassets.dev/assets/34603/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34603/v1/poster.webp","blurhash":"U7D9-g?b004U_4%M9F9F00Rj_NtR%gxuMxIU","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":31884,"triangles":688,"vertices":1555,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.7500106687057108,-0.00002579094089048828,-0.07302896253291451],"max":[0.7500106687057108,2.799999952316284,0.07302896253291451]},"sizeMeters":[1.5,2.8,0.146],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:13.633Z","updatedAt":"2026-09-11T09:26:13.731Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34603/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SalonWallPanelModulePetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34603/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34603/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34603/v1/model.glb\" alt=\"Salon wall panel module (Pet Shop and Grooming Salon)\" 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/34603/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/34603/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34569","slug":"pet-shop-and-grooming-salon-gondola-shelving-unit-f56a7fe6","title":"Gondola shelving unit stocked with pet food (Pet Shop and Grooming Salon)","summary":"A 1.25 m double sided retail gondola on a recessed plinth: grey gable uprights, a slotted spine, a deep base deck and three shelves a side with front lips and blank teal and amber ticket strips, stocked with standing sacks of dry food, blocks of tins and cartons.","description":"A 1.25 m double sided retail gondola on a recessed plinth: grey gable uprights, a slotted spine, a deep base deck and three shelves a side with front lips and blank teal and amber ticket strips, stocked with standing sacks of dry food, blocks of tins and cartons. Dimensions 1.25 by 1.80 by 0.88 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: gondola-left, gondola-right (type gondola). Couple the bays gable to gable on their ports and a run repeats down an aisle at 1.25 m centres. Deck heights are 0.14, 0.62, 1.02 and 1.40 m. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-gondola-shelving-unit-f56a7fe6","cdnUrl":"https://cdn.3dassets.dev/assets/34569/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-gondola-shelving-unit-f56a7fe6","thumbnailUrl":"https://cdn.3dassets.dev/assets/34569/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34569/v1/poster.webp","blurhash":"U8EfZx_3009G~q%MIUIT00Rj?bRit6ozR*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":483440,"triangles":11776,"vertices":25361,"meshes":8,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-0.6249433714248064,0.000004268365362415649,-0.44005980449086174],"max":[0.6249433714248064,1.7999999523162842,0.44005980449086174]},"sizeMeters":[1.25,1.8,0.88],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:53.416Z","updatedAt":"2026-09-11T09:25:53.535Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34569/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GondolaShelvingUnitStockedWithPetFoodPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34569/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34569/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34569/v1/model.glb\" alt=\"Gondola shelving unit stocked with pet food (Pet Shop and Grooming Salon)\" 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/34569/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/34569/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34570","slug":"pet-shop-and-grooming-salon-gondola-toy-and-accessory--6bd8b0f6","title":"Gondola bay, toys and accessories (Pet Shop and Grooming Salon)","summary":"The same bay and the same ports stocked for the accessory aisle: boxed stock on the base deck, peg rails of leads and collars, and a deck of balls, rings and knotted toys, so a run can mix food and accessories without a transition piece.","description":"The same bay and the same ports stocked for the accessory aisle: boxed stock on the base deck, peg rails of leads and collars, and a deck of balls, rings and knotted toys, so a run can mix food and accessories without a transition piece. Dimensions 1.25 by 1.80 by 0.88 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: gondola-left, gondola-right (type gondola). Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-gondola-toy-and-accessory--6bd8b0f6","cdnUrl":"https://cdn.3dassets.dev/assets/34570/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-gondola-toy-and-accessory--6bd8b0f6","thumbnailUrl":"https://cdn.3dassets.dev/assets/34570/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34570/v1/poster.webp","blurhash":"U7Eo}Y~q004V_3xvRPMx00M|_2RP-:xuIUD%","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":492636,"triangles":11624,"vertices":26035,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6249433714248064,0.000004268365362415649,-0.44005980449086174],"max":[0.6249433714248064,1.7999999523162842,0.44005980449086174]},"sizeMeters":[1.25,1.8,0.88],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:53.444Z","updatedAt":"2026-09-11T09:25:53.555Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34570/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GondolaBayToysAndAccessoriesPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34570/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34570/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34570/v1/model.glb\" alt=\"Gondola bay, toys and accessories (Pet Shop and Grooming Salon)\" 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/34570/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/34570/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34567","slug":"pet-shop-and-grooming-salon-gondola-end-cap-150d2b6e","title":"Gondola end cap display (Pet Shop and Grooming Salon)","summary":"The single sided unit that closes a gondola run: a 1 m grey bay with four raked decks of sacks, cartons and toys, blank amber ticket strips and a blank header board over the top.","description":"The single sided unit that closes a gondola run: a 1 m grey bay with four raked decks of sacks, cartons and toys, blank amber ticket strips and a blank header board over the top. Dimensions 1.00 by 1.95 by 0.49 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Stands against the gable of the last gondola in a run; it carries no ports of its own. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-gondola-end-cap-150d2b6e","cdnUrl":"https://cdn.3dassets.dev/assets/34567/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-gondola-end-cap-150d2b6e","thumbnailUrl":"https://cdn.3dassets.dev/assets/34567/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34567/v1/poster.webp","blurhash":"U8DJL:%M009H~pof4.M{00RP?utRxut6M{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":204500,"triangles":4840,"vertices":10578,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.5000149678312364,-0.000014039703245788404,-0.239954686617548],"max":[0.5000149678312364,1.9500000476837158,0.2539703196230856]},"sizeMeters":[1,1.95,0.494],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:53.449Z","updatedAt":"2026-09-11T09:25:53.573Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34567/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GondolaEndCapDisplayPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34567/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34567/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34567/v1/model.glb\" alt=\"Gondola end cap display (Pet Shop and Grooming Salon)\" 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/34567/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/34567/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34580","slug":"pet-shop-and-grooming-salon-price-sign-set-fe0346b2","title":"Price sign set (Pet Shop and Grooming Salon)","summary":"Three blank signs for a shop floor: a two sided A frame in teal and amber, a double sided aisle blade on a weighted stand, and a counter top shelf talker in a stainless clip. Every face is wordless, so a project writes its own.","description":"Three blank signs for a shop floor: a two sided A frame in teal and amber, a double sided aisle blade on a weighted stand, and a counter top shelf talker in a stainless clip. Every face is wordless, so a project writes its own. Dimensions 1.05 by 1.02 by 0.38 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-price-sign-set-fe0346b2","cdnUrl":"https://cdn.3dassets.dev/assets/34580/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-price-sign-set-fe0346b2","thumbnailUrl":"https://cdn.3dassets.dev/assets/34580/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34580/v1/poster.webp","blurhash":"UBC%1_~W004:9bocenRk000L-;~U#jxtt,NG","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":36352,"triangles":784,"vertices":1697,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.529987761430097,0,-0.18800539289308876],"max":[0.5200094532009069,1.0199999809265137,0.1880206150165724]},"sizeMeters":[1.05,1.02,0.376],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:00.303Z","updatedAt":"2026-09-11T09:26:00.475Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34580/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PriceSignSetPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34580/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34580/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34580/v1/model.glb\" alt=\"Price sign set (Pet Shop and Grooming Salon)\" 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/34580/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/34580/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34573","slug":"pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","title":"Wall shelving bay (Pet Shop and Grooming Salon)","summary":"A 1 m by 2 m wall shelving bay on slotted uprights: a backing panel, five decks of sacks, tins and cartons with blank ticket strips, a kick plinth and a lit top valance in the house teal.","description":"A 1 m by 2 m wall shelving bay on slotted uprights: a backing panel, five decks of sacks, tins and cartons with blank ticket strips, a kick plinth and a lit top valance in the house teal. Dimensions 1.00 by 2.00 by 0.40 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Connectors: bay-left, bay-right (type wall-shelf). Couple the bays on their stiles for a run along a shop wall at 1 m centres. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","cdnUrl":"https://cdn.3dassets.dev/assets/34573/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-wall-shelving-bay-96f01b4d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34573/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34573/v1/poster.webp","blurhash":"U8DJVCxu00IB~qxu4.IU00WB?bt6tlogVsV?","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":297528,"triangles":7118,"vertices":15436,"meshes":9,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-0.5000277720013161,0.000030061123592467487,-0.19903146612413905],"max":[0.5000277720013161,2,0.2049507427095792]},"sizeMeters":[1,2,0.404],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:56.373Z","updatedAt":"2026-09-11T09:25:56.575Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34573/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallShelvingBayPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34573/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34573/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34573/v1/model.glb\" alt=\"Wall shelving bay (Pet Shop and Grooming Salon)\" 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/34573/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/34573/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34571","slug":"pet-shop-and-grooming-salon-accessory-rail-4ada6ffa","title":"Accessory rail with leads and collars (Pet Shop and Grooming Salon)","summary":"A 1.1 m floor standing accessory frame with four peg rails, hung with twenty four leads and collars in the toy colours under a blank teal header. Each lead has a modelled trigger clip and each collar its buckle.","description":"A 1.1 m floor standing accessory frame with four peg rails, hung with twenty four leads and collars in the toy colours under a blank teal header. Each lead has a modelled trigger clip and each collar its buckle. Dimensions 1.15 by 1.90 by 0.45 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Leads, hoses, cables and cloth are static geometry: a flexible linkage is not reachable with one rigid node transform. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-accessory-rail-4ada6ffa","cdnUrl":"https://cdn.3dassets.dev/assets/34571/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-accessory-rail-4ada6ffa","thumbnailUrl":"https://cdn.3dassets.dev/assets/34571/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34571/v1/poster.webp","blurhash":"U7BN4l%M00D%~qx[8_D%4nof-:M_t7xajYIU","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":262952,"triangles":6088,"vertices":13819,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.5749601089918359,0,-0.2249977111117893],"max":[0.5749601089918359,1.899999976158142,0.2249977111117893]},"sizeMeters":[1.15,1.9,0.45],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:56.276Z","updatedAt":"2026-09-11T09:25:56.398Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34571/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AccessoryRailWithLeadsAndCollarsPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34571/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34571/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34571/v1/model.glb\" alt=\"Accessory rail with leads and collars (Pet Shop and Grooming Salon)\" 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/34571/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/34571/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34586","slug":"pet-shop-and-grooming-salon-aquarium-display-rack-a0c91d77","title":"Aquarium display rack with empty tanks (Pet Shop and Grooming Salon)","summary":"A 1.6 m grey rack of six EMPTY display tanks on three decks, each tank glazed on a dark base frame with a hood, a lit strip under it and a teal light band. There is no water and there are no fish: this is retail stock on display, before it is set up.","description":"A 1.6 m grey rack of six EMPTY display tanks on three decks, each tank glazed on a dark base frame with a hood, a lit strip under it and a teal light band. There is no water and there are no fish: this is retail stock on display, before it is set up. Dimensions 1.60 by 1.90 by 0.49 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The fixture is modelled empty: there is no animal, no water and no occupant anywhere in this pack. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-aquarium-display-rack-a0c91d77","cdnUrl":"https://cdn.3dassets.dev/assets/34586/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-aquarium-display-rack-a0c91d77","thumbnailUrl":"https://cdn.3dassets.dev/assets/34586/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34586/v1/poster.webp","blurhash":"U8Csv{.700xa_N-;D$D%00RjtRM_xtt7M{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":265120,"triangles":6142,"vertices":13877,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.8000213516976775,0,-0.24095211363493238],"max":[0.8000213516976775,1.899999976158142,0.252044837526784]},"sizeMeters":[1.6,1.9,0.493],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:04.436Z","updatedAt":"2026-09-11T09:26:04.574Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34586/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AquariumDisplayRackWithEmptyTanksPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34586/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34586/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34586/v1/model.glb\" alt=\"Aquarium display rack with empty tanks (Pet Shop and Grooming Salon)\" 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/34586/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/34586/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34588","slug":"pet-shop-and-grooming-salon-reptile-vivarium-stack-4161a3c7","title":"Reptile vivarium stack, empty and unheated (Pet Shop and Grooming Salon)","summary":"Three ply vivaria stacked on a plinth, each with a hinged glass door in a stainless frame, a vent strip over the head and a dark lamp guard in the roof. Every unit is empty and unheated: no animal, no substrate and no live heat source.","description":"Three ply vivaria stacked on a plinth, each with a hinged glass door in a stainless frame, a vent strip over the head and a dark lamp guard in the roof. Every unit is empty and unheated: no animal, no substrate and no live heat source. Dimensions 1.20 by 1.74 by 0.57 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: vivarium-door-0, vivarium-door-1, vivarium-door-2. The fixture is modelled empty: there is no animal, no water and no occupant anywhere in this pack. The three doors share one system, so they swing together. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-reptile-vivarium-stack-4161a3c7","cdnUrl":"https://cdn.3dassets.dev/assets/34588/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-reptile-vivarium-stack-4161a3c7","thumbnailUrl":"https://cdn.3dassets.dev/assets/34588/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34588/v1/poster.webp","blurhash":"UEF5:7Io00%2~oxt9GM|02s:%MRkxtWWM{ja","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":122800,"triangles":3434,"vertices":7574,"meshes":14,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6000288610227837,0,-0.28495972555548077],"max":[0.6000288610227837,1.7400252111489187,0.28495972555548077]},"sizeMeters":[1.2,1.74,0.57],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:05.030Z","updatedAt":"2026-09-11T09:26:05.153Z","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/34588/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 ReptileVivariumStackEmptyAndUnheatedPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34588/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/34588/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34588/v1/model.glb\" alt=\"Reptile vivarium stack, empty and unheated (Pet Shop and Grooming Salon)\" 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/34588/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/34588/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34585","slug":"pet-shop-and-grooming-salon-small-animal-habitat-unit-83d6bc77","title":"Small animal habitat display unit, empty (Pet Shop and Grooming Salon)","summary":"A four pen display unit on a grey frame: deep amber and teal trays, clear fronts, wire mesh tops and blank card holders. Every pen is unoccupied and unbedded, because this is the fixture a shop displays housing in.","description":"A four pen display unit on a grey frame: deep amber and teal trays, clear fronts, wire mesh tops and blank card holders. Every pen is unoccupied and unbedded, because this is the fixture a shop displays housing in. Dimensions 1.30 by 1.72 by 0.57 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The fixture is modelled empty: there is no animal, no water and no occupant anywhere in this pack. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-small-animal-habitat-unit-83d6bc77","cdnUrl":"https://cdn.3dassets.dev/assets/34585/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-small-animal-habitat-unit-83d6bc77","thumbnailUrl":"https://cdn.3dassets.dev/assets/34585/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34585/v1/poster.webp","blurhash":"U6DmEp~V009G.m-=Mc9E00JC.8NE=f$}EM9a","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":100292,"triangles":2528,"vertices":5760,"meshes":9,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499954349360422,0.00003112753856100714,-0.28999828129427424],"max":[0.6499954349360422,1.7200000286102295,0.2800134336206088]},"sizeMeters":[1.3,1.72,0.57],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:05.229Z","updatedAt":"2026-09-11T09:26:05.357Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34585/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SmallAnimalHabitatDisplayUnitEmptyPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34585/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34585/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34585/v1/model.glb\" alt=\"Small animal habitat display unit, empty (Pet Shop and Grooming Salon)\" 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/34585/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/34585/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34587","slug":"pet-shop-and-grooming-salon-bird-cage-and-stand-44c8fd9f","title":"Bird cage on a stand, empty (Pet Shop and Grooming Salon)","summary":"A 1.6 m wire cage on a wheeled grey column: eighteen bars drawn up to a crown ring, two hoops, a teal floor tray in a dark seed guard, a closed amber door panel and a blank ticket. The cage is empty, with no bird, no perch occupant and no feed.","description":"A 1.6 m wire cage on a wheeled grey column: eighteen bars drawn up to a crown ring, two hoops, a teal floor tray in a dark seed guard, a closed amber door panel and a blank ticket. The cage is empty, with no bird, no perch occupant and no feed. Dimensions 0.62 by 1.74 by 0.62 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. The fixture is modelled empty: there is no animal, no water and no occupant anywhere in this pack. The cage door is modelled closed and does not open; the stand castors are rigged to roll. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-bird-cage-and-stand-44c8fd9f","cdnUrl":"https://cdn.3dassets.dev/assets/34587/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-bird-cage-and-stand-44c8fd9f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34587/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34587/v1/poster.webp","blurhash":"U284rU?a00009Fae?vtRHrM|l9%L00Rk~p%0","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":127036,"triangles":3196,"vertices":7070,"meshes":10,"materials":6,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.3100000023841858,0,-0.3100000023841858],"max":[0.3100000023841858,1.7383999824523926,0.3100000023841858]},"sizeMeters":[0.62,1.738,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:05.028Z","updatedAt":"2026-09-11T09:26:05.274Z","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/34587/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 BirdCageOnAStandEmptyPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34587/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/34587/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34587/v1/model.glb\" alt=\"Bird cage on a stand, empty (Pet Shop and Grooming Salon)\" 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/34587/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/34587/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34574","slug":"pet-shop-and-grooming-salon-chest-freezer-352e154b","title":"Chest freezer for raw and frozen food (Pet Shop and Grooming Salon)","summary":"A 1.55 m chest freezer with a teal front band and a blank label panel: a lined well with a wire divider and boxed frozen stock, under a stainless framed glazed lid hinged along the back edge.","description":"A 1.55 m chest freezer with a teal front band and a blank label panel: a lined well with a wire divider and boxed frozen stock, under a stainless framed glazed lid hinged along the back edge. Dimensions 1.55 by 0.94 by 0.82 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: freezer-lid. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-chest-freezer-352e154b","cdnUrl":"https://cdn.3dassets.dev/assets/34574/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-chest-freezer-352e154b","thumbnailUrl":"https://cdn.3dassets.dev/assets/34574/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34574/v1/poster.webp","blurhash":"U9Gb-g?^00R*IA~W-;D%00Di%2n$yD01D%WA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":83316,"triangles":1824,"vertices":4129,"meshes":9,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.7749999761581421,0.00001068222337465008,-0.3900189094774549],"max":[0.7749999761581421,0.9439896925518518,0.43097638949957856]},"sizeMeters":[1.55,0.944,0.821],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:55.520Z","updatedAt":"2026-09-11T09:25:55.661Z","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/34574/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 ChestFreezerForRawAndFrozenFoodPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34574/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/34574/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34574/v1/model.glb\" alt=\"Chest freezer for raw and frozen food (Pet Shop and Grooming Salon)\" 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/34574/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/34574/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34572","slug":"pet-shop-and-grooming-salon-bulk-food-dispenser-bank-4b1fb48d","title":"Bulk food dispenser bins (Pet Shop and Grooming Salon)","summary":"Three gravity hoppers on a grey stand: clear bodies filled with dry feed under coloured collars, tapered chutes with hinged pour flaps, a stainless catch tray and a stack of blank bags beside them.","description":"Three gravity hoppers on a grey stand: clear bodies filled with dry feed under coloured collars, tapered chutes with hinged pour flaps, a stainless catch tray and a stack of blank bags beside them. Dimensions 1.20 by 1.36 by 0.49 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: dispenser-flap-0, dispenser-flap-1, dispenser-flap-2. The three flaps share one system, so they open and close together. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-bulk-food-dispenser-bank-4b1fb48d","cdnUrl":"https://cdn.3dassets.dev/assets/34572/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-bulk-food-dispenser-bank-4b1fb48d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34572/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34572/v1/poster.webp","blurhash":"U6EMOE?F00E4u3%gMfDi00EM~C,o~WknD*VZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":78800,"triangles":1852,"vertices":4044,"meshes":14,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6000000238418579,-0.000029601581344879113,-0.2300058076564097],"max":[0.6000000238418579,1.3600153911556494,0.25698055697182487]},"sizeMeters":[1.2,1.36,0.487],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:56.327Z","updatedAt":"2026-09-11T09:25:56.553Z","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/34572/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 BulkFoodDispenserBinsPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34572/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/34572/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34572/v1/model.glb\" alt=\"Bulk food dispenser bins (Pet Shop and Grooming Salon)\" 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/34572/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/34572/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34590","slug":"pet-shop-and-grooming-salon-feed-bin-and-scoop-set-cd856265","title":"Feed bin and scoop set (Pet Shop and Grooming Salon)","summary":"Two wheeled feed storage bins, one grey and one teal, with dark hinged lids, amber grab bars and blank label panels, and a measuring scoop hung on each rim with a bowl, a shaft and a closed grip.","description":"Two wheeled feed storage bins, one grey and one teal, with dark hinged lids, amber grab bars and blank label panels, and a measuring scoop hung on each rim with a bowl, a shaft and a closed grip. Dimensions 1.31 by 1.01 by 0.52 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The lids and the scoops are modelled in place and static; the bins run on four fixed rollers each. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-feed-bin-and-scoop-set-cd856265","cdnUrl":"https://cdn.3dassets.dev/assets/34590/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-feed-bin-and-scoop-set-cd856265","thumbnailUrl":"https://cdn.3dassets.dev/assets/34590/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34590/v1/poster.webp","blurhash":"UCBE2M~C4TACh|XnpIic009Fx]%Mpw$iR5I;","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":68236,"triangles":1696,"vertices":3492,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.6549999713897705,-0.00003595747924267645,-0.259965044951444],"max":[0.6549999713897705,1.0114421961772164,0.259965044951444]},"sizeMeters":[1.31,1.011,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:06.813Z","updatedAt":"2026-09-11T09:26:07.028Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34590/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FeedBinAndScoopSetPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34590/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34590/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34590/v1/model.glb\" alt=\"Feed bin and scoop set (Pet Shop and Grooming Salon)\" 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/34590/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/34590/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34589","slug":"pet-shop-and-grooming-salon-bedding-bale-stack-cf3fb26c","title":"Bedding and substrate bale stack (Pet Shop and Grooming Salon)","summary":"Six compressed bales of bedding and substrate stacked in alternate courses on a ply pallet, each banded twice in teal with a blank label face. Unopened stock, not bedding in use.","description":"Six compressed bales of bedding and substrate stacked in alternate courses on a ply pallet, each banded twice in teal with a blank label face. Unopened stock, not bedding in use. Dimensions 1.37 by 1.00 by 0.80 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-bedding-bale-stack-cf3fb26c","cdnUrl":"https://cdn.3dassets.dev/assets/34589/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-bedding-bale-stack-cf3fb26c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34589/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34589/v1/poster.webp","blurhash":"UCGuXO~V00IAMd%1ahIW00E1ozR+%fx[%LIp","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":99268,"triangles":2368,"vertices":5035,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6851999759674072,-0.000014648981426265695,-0.399992362079969],"max":[0.6851999759674072,0.9999994057727108,0.399992362079969]},"sizeMeters":[1.37,1,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:07.291Z","updatedAt":"2026-09-11T09:26:07.394Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34589/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BeddingAndSubstrateBaleStackPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34589/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34589/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34589/v1/model.glb\" alt=\"Bedding and substrate bale stack (Pet Shop and Grooming Salon)\" 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/34589/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/34589/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34577","slug":"pet-shop-and-grooming-salon-till-counter-9b1e1036","title":"Till counter with card reader and impulse display (Pet Shop and Grooming Salon)","summary":"The pay point: a 1.6 m grey counter with a teal fascia and a ply top, carrying a register on a plate, a blank customer screen, a card reader on a stainless gooseneck, a three tier impulse rack of small boxed stock and a cash drawer on runners.","description":"The pay point: a 1.6 m grey counter with a teal fascia and a ply top, carrying a register on a plate, a blank customer screen, a card reader on a stainless gooseneck, a three tier impulse rack of small boxed stock and a cash drawer on runners. Dimensions 1.60 by 1.43 by 0.80 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: till-drawer. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-till-counter-9b1e1036","cdnUrl":"https://cdn.3dassets.dev/assets/34577/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-till-counter-9b1e1036","thumbnailUrl":"https://cdn.3dassets.dev/assets/34577/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34577/v1/poster.webp","blurhash":"U8DJkpk=00=|+[-:KOE100m,_MEg109u=dwI","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":121260,"triangles":2692,"vertices":5993,"meshes":10,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.800000011920929,-0.00001203215445644279,-0.3750358648371041],"max":[0.800000011920929,1.4262298555219817,0.4239944075725564]},"sizeMeters":[1.6,1.426,0.799],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:58.201Z","updatedAt":"2026-09-11T09:25:58.346Z","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/34577/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 TillCounterWithCardReaderAndImpulseDisplayPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34577/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/34577/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34577/v1/model.glb\" alt=\"Till counter with card reader and impulse display (Pet Shop and Grooming Salon)\" 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/34577/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/34577/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34579","slug":"pet-shop-and-grooming-salon-queue-rail-8a72ff96","title":"Queue rail (Pet Shop and Grooming Salon)","summary":"A 1.5 m chromed queue rail on two weighted posts with teal collars and a blank raked sign plate, for the run up to the till.","description":"A 1.5 m chromed queue rail on two weighted posts with teal collars and a blank raked sign plate, for the run up to the till. Dimensions 1.84 by 1.06 by 0.34 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-queue-rail-8a72ff96","cdnUrl":"https://cdn.3dassets.dev/assets/34579/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-queue-rail-8a72ff96","thumbnailUrl":"https://cdn.3dassets.dev/assets/34579/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34579/v1/poster.webp","blurhash":"U79Qmoxu59tl?F?b4:D$D$IURQWA4o%M~Vi_","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":27944,"triangles":616,"vertices":1291,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.9200000166893005,-0.00006105645635651191,-0.17003448900022594],"max":[0.9200000166893005,1.0565128131305257,0.17003448900022594]},"sizeMeters":[1.84,1.057,0.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:01.050Z","updatedAt":"2026-09-11T09:26:01.266Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34579/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QueueRailPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34579/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34579/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34579/v1/model.glb\" alt=\"Queue rail (Pet Shop and Grooming Salon)\" 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/34579/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/34579/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34576","slug":"pet-shop-and-grooming-salon-basket-stack-74018424","title":"Shopping basket stack (Pet Shop and Grooming Salon)","summary":"Six nested shopping baskets in alternating teal and lime on a low grey dolly, with dark rolled rims and a folding handle pair on the top basket.","description":"Six nested shopping baskets in alternating teal and lime on a low grey dolly, with dark rolled rims and a folding handle pair on the top basket. Dimensions 0.52 by 0.76 by 0.40 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-basket-stack-74018424","cdnUrl":"https://cdn.3dassets.dev/assets/34576/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-basket-stack-74018424","thumbnailUrl":"https://cdn.3dassets.dev/assets/34576/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34576/v1/poster.webp","blurhash":"U6BD[=.R008_00Rj_Ls:QAMxTu%f%Xxar|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":45092,"triangles":1360,"vertices":2908,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.25999999046325684,0,-0.20001281043755348],"max":[0.25999999046325684,0.7633355259895325,0.20001281043755348]},"sizeMeters":[0.52,0.763,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:59.208Z","updatedAt":"2026-09-11T09:25:59.339Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34576/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShoppingBasketStackPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34576/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34576/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34576/v1/model.glb\" alt=\"Shopping basket stack (Pet Shop and Grooming Salon)\" 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/34576/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/34576/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34578","slug":"pet-shop-and-grooming-salon-shopping-trolley-480bd2ad","title":"Shopping trolley (Pet Shop and Grooming Salon)","summary":"A shop trolley with a modelled wire basket on a chromed chassis: vertical wires, three horizontal runs a side, a wire floor, a teal push handle and a blank amber fascia plate. All four castors are rigged to roll.","description":"A shop trolley with a modelled wire basket on a chromed chassis: vertical wires, three horizontal runs a side, a wire floor, a teal push handle and a blank amber fascia plate. All four castors are rigged to roll. Dimensions 0.51 by 0.96 by 0.79 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-shopping-trolley-480bd2ad","cdnUrl":"https://cdn.3dassets.dev/assets/34578/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-shopping-trolley-480bd2ad","thumbnailUrl":"https://cdn.3dassets.dev/assets/34578/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34578/v1/poster.webp","blurhash":"U6Bpwt-500Fz%zR4VsyX00IC~Wx[yZIVDi%f","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":86952,"triangles":2032,"vertices":4628,"meshes":5,"materials":4,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.2549968076287808,-7.450580569168253e-10,-0.38698659254969664],"max":[0.2549968076287808,0.9561723664507102,0.40042373586588614]},"sizeMeters":[0.51,0.956,0.787],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:59.372Z","updatedAt":"2026-09-11T09:25:59.483Z","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/34578/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 ShoppingTrolleyPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34578/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/34578/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34578/v1/model.glb\" alt=\"Shopping trolley (Pet Shop and Grooming Salon)\" 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/34578/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/34578/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34575","slug":"pet-shop-and-grooming-salon-toy-bin-display-25843f02","title":"Toy bin display (Pet Shop and Grooming Salon)","summary":"Three raked open totes in lime, amber and teal on a grey stand, heaped with balls, rubber rings and knotted toys, under a blank sign header. The colour a grey shop floor needs.","description":"Three raked open totes in lime, amber and teal on a grey stand, heaped with balls, rubber rings and knotted toys, under a blank sign header. The colour a grey shop floor needs. Dimensions 1.00 by 1.41 by 0.49 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-toy-bin-display-25843f02","cdnUrl":"https://cdn.3dassets.dev/assets/34575/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-toy-bin-display-25843f02","thumbnailUrl":"https://cdn.3dassets.dev/assets/34575/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34575/v1/poster.webp","blurhash":"U7Dcmz-:00RD?^%MH?D$00R.?YM^=rxt9}D+","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":184976,"triangles":4592,"vertices":9558,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5000404237153087,0.00002655197505322532,-0.24775318465732415],"max":[0.5000404237153087,1.409999966621399,0.24501907344696397]},"sizeMeters":[1,1.41,0.493],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:25:58.391Z","updatedAt":"2026-09-11T09:25:58.502Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34575/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ToyBinDisplayPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34575/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34575/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34575/v1/model.glb\" alt=\"Toy bin display (Pet Shop and Grooming Salon)\" 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/34575/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/34575/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34584","slug":"pet-shop-and-grooming-salon-window-display-platform-e2a5ffba","title":"Window display platform with dressing set (Pet Shop and Grooming Salon)","summary":"A 1.4 m ply plinth with a teal edge band, dressed the way a shop window is: a riser box of sacks, a low box of cartons, a group of toys, two lime rings and a blank easel card on a raked stand.","description":"A 1.4 m ply plinth with a teal edge band, dressed the way a shop window is: a riser box of sacks, a low box of cartons, a group of toys, two lime rings and a blank easel card on a raked stand. Dimensions 1.40 by 0.79 by 0.72 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-window-display-platform-e2a5ffba","cdnUrl":"https://cdn.3dassets.dev/assets/34584/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-window-display-platform-e2a5ffba","thumbnailUrl":"https://cdn.3dassets.dev/assets/34584/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34584/v1/poster.webp","blurhash":"UAG[+h-O00El01?ZkW4p00E3t6rq_NNL$Lw]","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":113444,"triangles":2672,"vertices":5639,"meshes":8,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-0.699999988079071,0.000039099063494058006,-0.35005340143020897],"max":[0.699999988079071,0.7883469131974301,0.37398387444407866]},"sizeMeters":[1.4,0.788,0.724],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:03.146Z","updatedAt":"2026-09-11T09:26:03.332Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34584/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WindowDisplayPlatformWithDressingSetPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34584/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34584/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34584/v1/model.glb\" alt=\"Window display platform with dressing set (Pet Shop and Grooming Salon)\" 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/34584/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/34584/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34600","slug":"pet-shop-and-grooming-salon-pedal-waste-bin-4ec1847f","title":"Pedal waste bin (Pet Shop and Grooming Salon)","summary":"A 700 mm stainless pedal bin with a teal band, an inner liner rim, a modelled pedal and rod linkage and a domed lid rigged to lift.","description":"A 700 mm stainless pedal bin with a teal band, an inner liner rim, a modelled pedal and rod linkage and a domed lid rigged to lift. Dimensions 0.40 by 0.69 by 0.46 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: bin-lid. The pedal and rod are modelled but static: the lid is the node that moves. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-pedal-waste-bin-4ec1847f","cdnUrl":"https://cdn.3dassets.dev/assets/34600/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-pedal-waste-bin-4ec1847f","thumbnailUrl":"https://cdn.3dassets.dev/assets/34600/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34600/v1/poster.webp","blurhash":"U27_NH%h00Mw^,M{9F.800IAyE%g0yNZ].s;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":27676,"triangles":600,"vertices":1252,"meshes":6,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.20000781580497903,0.000014454942597594278,-0.19696155190467834],"max":[0.20000781580497903,0.6899987872317693,0.259500652551651]},"sizeMeters":[0.4,0.69,0.456],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:11.874Z","updatedAt":"2026-09-11T09:26:11.976Z","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/34600/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 PedalWasteBinPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34600/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/34600/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34600/v1/model.glb\" alt=\"Pedal waste bin (Pet Shop and Grooming Salon)\" 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/34600/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/34600/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34593","slug":"pet-shop-and-grooming-salon-drying-cage-bank-e9aee837","title":"Drying cage bank, empty (Pet Shop and Grooming Salon)","summary":"A 0.9 m bank of four EMPTY drying cages in a grey frame over a warm air plenum: barred doors on real hinges with teal and amber latches, stainless floors, plenum grilles at the back and a stack of folded towels on top.","description":"A 0.9 m bank of four EMPTY drying cages in a grey frame over a warm air plenum: barred doors on real hinges with teal and amber latches, stainless floors, plenum grilles at the back and a stack of folded towels on top. Dimensions 0.90 by 1.70 by 0.83 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: cage-door-0, cage-door-1, cage-door-2, cage-door-3. Connectors: cage-left, cage-right (type cage-bank). The fixture is modelled empty: there is no animal, no water and no occupant anywhere in this pack. Couple the banks side by side on their ports for a wall of cages. The four doors share one system, so they swing together; the fans are static. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-drying-cage-bank-e9aee837","cdnUrl":"https://cdn.3dassets.dev/assets/34593/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-drying-cage-bank-e9aee837","thumbnailUrl":"https://cdn.3dassets.dev/assets/34593/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34593/v1/poster.webp","blurhash":"UGDl~Cxu00Rl_Nof9FV@D$ofWEM{xaofM{R*","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"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":154908,"triangles":5112,"vertices":11473,"meshes":14,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.449965495270238,0,-0.40997037990403856],"max":[0.449965495270238,1.6999850439429411,0.4249818562882848]},"sizeMeters":[0.9,1.7,0.835],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:09.708Z","updatedAt":"2026-09-11T09:26:09.819Z","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/34593/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 DryingCageBankEmptyPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34593/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/34593/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34593/v1/model.glb\" alt=\"Drying cage bank, empty (Pet Shop and Grooming Salon)\" 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/34593/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/34593/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34598","slug":"pet-shop-and-grooming-salon-towel-shelf-37d778c4","title":"Towel shelf (Pet Shop and Grooming Salon)","summary":"A 1 m stainless towel shelf on braced legs with a teal front rail: two stacks of folded towels above, a hanging rail below with two towels over it, for the wet end of a salon.","description":"A 1 m stainless towel shelf on braced legs with a teal front rail: two stacks of folded towels above, a hanging rail below with two towels over it, for the wet end of a salon. Dimensions 1.00 by 0.69 by 0.34 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The towels are modelled as folded and hanging cloth volumes and do not move. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-towel-shelf-37d778c4","cdnUrl":"https://cdn.3dassets.dev/assets/34598/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-towel-shelf-37d778c4","thumbnailUrl":"https://cdn.3dassets.dev/assets/34598/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34598/v1/poster.webp","blurhash":"UMFF$_-;00M{~q%gRjM{8_%Mx]M{RP%MWVE1","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":64096,"triangles":1456,"vertices":3239,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5,-0.000028970886980173027,-0.17000335703604236],"max":[0.5,0.6939868982158806,0.17000335703604236]},"sizeMeters":[1,0.694,0.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:11.073Z","updatedAt":"2026-09-11T09:26:11.266Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34598/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TowelShelfPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34598/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34598/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34598/v1/model.glb\" alt=\"Towel shelf (Pet Shop and Grooming Salon)\" 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/34598/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/34598/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34596","slug":"pet-shop-and-grooming-salon-grooming-scissors-roll-e6502c1d","title":"Grooming scissors set on a roll (Pet Shop and Grooming Salon)","summary":"The same tray laid with two pairs of grooming shears, each modelled as two crossed blades on a screw with a finger bow on each shank, beside a rolled timber tool wrap.","description":"The same tray laid with two pairs of grooming shears, each modelled as two crossed blades on a screw with a finger bow on each shank, beside a rolled timber tool wrap. Dimensions 0.47 by 0.08 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-grooming-scissors-roll-e6502c1d","cdnUrl":"https://cdn.3dassets.dev/assets/34596/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-grooming-scissors-roll-e6502c1d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34596/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34596/v1/poster.webp","blurhash":"U8BzFE%100Wa?c%MM{IU00WG~WM_009Fxb%M","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"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":56884,"triangles":1282,"vertices":2733,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.23399999737739563,0.00000619474791278482,-0.15400994730799017],"max":[0.23399999737739563,0.07827740853353524,0.15400994730799017]},"sizeMeters":[0.468,0.078,0.308],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:10.003Z","updatedAt":"2026-09-11T09:26:10.222Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34596/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GroomingScissorsSetOnARollPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34596/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34596/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34596/v1/model.glb\" alt=\"Grooming scissors set on a roll (Pet Shop and Grooming Salon)\" 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/34596/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/34596/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34591","slug":"pet-shop-and-grooming-salon-grooming-table-c57c0c75","title":"Grooming table with hydraulic post and restraint arm (Pet Shop and Grooming Salon)","summary":"A 1.1 m grooming table: a stainless base plate with a foot pedal, a grey ram shroud, and a ribbed rubber decked top with a teal edge trim carrying a cranked restraint arm with an open loop. The deck, the post shaft and the arm rise together on the ram.","description":"A 1.1 m grooming table: a stainless base plate with a foot pedal, a grey ram shroud, and a ribbed rubber decked top with a teal edge trim carrying a cranked restraint arm with an open loop. The deck, the post shaft and the arm rise together on the ram. Dimensions 1.11 by 1.60 by 0.61 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: table-lift. The loop hangs free and holds nothing: no animal is modelled anywhere in this pack. The pedal and the linkage are modelled but static. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-grooming-table-c57c0c75","cdnUrl":"https://cdn.3dassets.dev/assets/34591/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-grooming-table-c57c0c75","thumbnailUrl":"https://cdn.3dassets.dev/assets/34591/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34591/v1/poster.webp","blurhash":"U67Uk:%M00D$8_a}-;ay8wS1%3ae_NjFDibH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":71404,"triangles":1564,"vertices":3467,"meshes":7,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5569999814033508,-0.000012973604563676355,-0.30703249196164806],"max":[0.5569999814033508,1.5959786081314087,0.30703249196164806]},"sizeMeters":[1.114,1.596,0.614],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:08.095Z","updatedAt":"2026-09-11T09:26:08.228Z","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/34591/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 GroomingTableWithHydraulicPostAndRestraintArmPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34591/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/34591/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34591/v1/model.glb\" alt=\"Grooming table with hydraulic post and restraint arm (Pet Shop and Grooming Salon)\" 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/34591/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/34591/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34595","slug":"pet-shop-and-grooming-salon-clipper-and-blade-tray-d13f910d","title":"Clipper and blade set on a tray (Pet Shop and Grooming Salon)","summary":"A stainless tray with a dark mat holding two clippers, each with a tapered body, a grey blade head and eleven modelled cutting teeth, plus three spare blade heads in a row beside them.","description":"A stainless tray with a dark mat holding two clippers, each with a tapered body, a grey blade head and eleven modelled cutting teeth, plus three spare blade heads in a row beside them. Dimensions 0.47 by 0.17 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-clipper-and-blade-tray-d13f910d","cdnUrl":"https://cdn.3dassets.dev/assets/34595/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-clipper-and-blade-tray-d13f910d","thumbnailUrl":"https://cdn.3dassets.dev/assets/34595/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34595/v1/poster.webp","blurhash":"U7BDc=%M00IT?c%NM{M_00WB_4t7009Exu%N","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"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":105896,"triangles":2490,"vertices":5395,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.23399999737739563,-0.000007118181289594849,-0.15400994730799017],"max":[0.23399999737739563,0.17117882807642357,0.15400994730799017]},"sizeMeters":[0.468,0.171,0.308],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:09.190Z","updatedAt":"2026-09-11T09:26:09.312Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34595/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ClipperAndBladeSetOnATrayPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34595/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34595/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34595/v1/model.glb\" alt=\"Clipper and blade set on a tray (Pet Shop and Grooming Salon)\" 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/34595/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/34595/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34592","slug":"pet-shop-and-grooming-salon-dog-bath-tub-f17b5157","title":"Dog bath tub with ramp and shower arm (Pet Shop and Grooming Salon)","summary":"A 1.4 m raised bathing tub on a grey cabinet with a teal kick: a stainless tub with a drain boss, a treaded loading ramp on the front, two lever mixers on a riser, a coiled hose on its hook and a spray head on a tilting elbow. The tub is empty and dry.","description":"A 1.4 m raised bathing tub on a grey cabinet with a teal kick: a stainless tub with a drain boss, a treaded loading ramp on the front, two lever mixers on a riser, a coiled hose on its hook and a spray head on a tilting elbow. The tub is empty and dry. Dimensions 1.40 by 1.60 by 1.76 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: shower-arm. Leads, hoses, cables and cloth are static geometry: a flexible linkage is not reachable with one rigid node transform. There is no water modelled anywhere in this pack. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-dog-bath-tub-f17b5157","cdnUrl":"https://cdn.3dassets.dev/assets/34592/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-dog-bath-tub-f17b5157","thumbnailUrl":"https://cdn.3dassets.dev/assets/34592/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34592/v1/poster.webp","blurhash":"U7Am@?%g008{8_8_WT-;00aK_N%g?^?bxbIA","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":72176,"triangles":1588,"vertices":3510,"meshes":7,"materials":5,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.699999988079071,0.000015632639173701612,-0.3800469920324312],"max":[0.699999988079071,1.5969836015728474,1.3808228969573975]},"sizeMeters":[1.4,1.597,1.761],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:07.107Z","updatedAt":"2026-09-11T09:26:07.228Z","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/34592/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 DogBathTubWithRampAndShowerArmPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34592/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/34592/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34592/v1/model.glb\" alt=\"Dog bath tub with ramp and shower arm (Pet Shop and Grooming Salon)\" 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/34592/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/34592/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34594","slug":"pet-shop-and-grooming-salon-stand-dryer-0bd19a53","title":"Stand dryer on wheels (Pet Shop and Grooming Salon)","summary":"A teal blower barrel on a raked yoke over a wheeled grey column: a dark intake collar, a guarded nozzle on concentric rings, a control box with two amber dials and a static supply cable down the column. All four castors are rigged to roll.","description":"A teal blower barrel on a raked yoke over a wheeled grey column: a dark intake collar, a guarded nozzle on concentric rings, a control box with two amber dials and a static supply cable down the column. All four castors are rigged to roll. Dimensions 0.46 by 1.44 by 0.66 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. Leads, hoses, cables and cloth are static geometry: a flexible linkage is not reachable with one rigid node transform. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-stand-dryer-0bd19a53","cdnUrl":"https://cdn.3dassets.dev/assets/34594/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-stand-dryer-0bd19a53","thumbnailUrl":"https://cdn.3dassets.dev/assets/34594/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34594/v1/poster.webp","blurhash":"U47Uk.WU00sq5Qxu^QIA00oL_NS2[pRPA@x^","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":93316,"triangles":2516,"vertices":5266,"meshes":9,"materials":5,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.22997525782002431,-1.7881393449270533e-9,-0.22997525782002431],"max":[0.22997525782002431,1.4386593103408813,0.426605241359709]},"sizeMeters":[0.46,1.439,0.657],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:08.863Z","updatedAt":"2026-09-11T09:26:08.985Z","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/34594/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 StandDryerOnWheelsPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34594/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/34594/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34594/v1/model.glb\" alt=\"Stand dryer on wheels (Pet Shop and Grooming Salon)\" 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/34594/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/34594/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34601","slug":"pet-shop-and-grooming-salon-cleaning-trolley-7fc8d8ea","title":"Cleaning trolley (Pet Shop and Grooming Salon)","summary":"A three deck stainless trolley with a teal push handle, carrying three blank shampoo bottles with pump caps, a folded cloth stack, a scrubbing brush with modelled bristles, a tray and a dark waste tub. All four castors are rigged to roll.","description":"A three deck stainless trolley with a teal push handle, carrying three blank shampoo bottles with pump caps, a folded cloth stack, a scrubbing brush with modelled bristles, a tray and a dark waste tub. All four castors are rigged to roll. Dimensions 0.80 by 1.22 by 0.48 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Named pivoted nodes: wheel-0, wheel-1, wheel-2, wheel-3. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Rigid node-transform clips: roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-cleaning-trolley-7fc8d8ea","cdnUrl":"https://cdn.3dassets.dev/assets/34601/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-cleaning-trolley-7fc8d8ea","thumbnailUrl":"https://cdn.3dassets.dev/assets/34601/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34601/v1/poster.webp","blurhash":"U7AwYb-;004n.S%LH?D%00NF~q%MIAa#x]ax","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"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":163904,"triangles":4108,"vertices":8918,"meshes":12,"materials":8,"textures":0,"animations":["roll"],"boundingBox":{"min":[-0.40002562087510696,0,-0.2399645897271588],"max":[0.40002562087510696,1.2200000286102295,0.2399645897271588]},"sizeMeters":[0.8,1.22,0.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:14.091Z","updatedAt":"2026-09-11T09:26:14.470Z","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/34601/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 CleaningTrolleyPetShopAndGroomingSalon(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/34601/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/34601/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34601/v1/model.glb\" alt=\"Cleaning trolley (Pet Shop and Grooming Salon)\" 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/34601/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/34601/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"34597","slug":"pet-shop-and-grooming-salon-brush-and-comb-tray-c94bf36c","title":"Brush and comb set on a tray (Pet Shop and Grooming Salon)","summary":"The same tray laid with two slicker brushes, each a crowned pad of twenty eight pins on a timber handle, and a steel comb with twenty two modelled teeth on a spine.","description":"The same tray laid with two slicker brushes, each a crowned pad of twenty eight pins on a timber handle, and a steel comb with twenty two modelled teeth on a spine. Dimensions 0.47 by 0.09 by 0.31 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-brush-and-comb-tray-c94bf36c","cdnUrl":"https://cdn.3dassets.dev/assets/34597/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-brush-and-comb-tray-c94bf36c","thumbnailUrl":"https://cdn.3dassets.dev/assets/34597/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34597/v1/poster.webp","blurhash":"U7B3{Mt800xZ.8%NRjMx00oe_NIo009Eo|%N","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"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":121296,"triangles":2810,"vertices":6481,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.23399999737739563,0.000009399955533957727,-0.15400994730799017],"max":[0.23399999737739563,0.08799059956762889,0.15400994730799017]},"sizeMeters":[0.468,0.088,0.308],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:11.775Z","updatedAt":"2026-09-11T09:26:11.973Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34597/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BrushAndCombSetOnATrayPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34597/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34597/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34597/v1/model.glb\" alt=\"Brush and comb set on a tray (Pet Shop and Grooming Salon)\" 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/34597/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/34597/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34599","slug":"pet-shop-and-grooming-salon-apron-hook-rail-5f7f5e52","title":"Apron hook rail (Pet Shop and Grooming Salon)","summary":"A timber backed rail with a teal bead and four stainless hooks, hung with an amber apron, a teal apron and a towel, each with its neck band and ties modelled.","description":"A timber backed rail with a teal bead and four stainless hooks, hung with an amber apron, a teal apron and a towel, each with its neck band and ties modelled. Dimensions 0.90 by 0.62 by 0.10 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. The model rests on its bottom edge at y=0; hang it by placing the backboard against a wall at about 1.6 m. The aprons are static cloth volumes. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-apron-hook-rail-5f7f5e52","cdnUrl":"https://cdn.3dassets.dev/assets/34599/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-apron-hook-rail-5f7f5e52","thumbnailUrl":"https://cdn.3dassets.dev/assets/34599/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34599/v1/poster.webp","blurhash":"ULF6I4?98wNN~U%LI:RP00o~k=MwEMt6soRQ","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":41320,"triangles":864,"vertices":1975,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.44999998807907104,0,-0.014007995478397548],"max":[0.44999998807907104,0.6199850410961539,0.08230958393407053]},"sizeMeters":[0.9,0.62,0.096],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:11.539Z","updatedAt":"2026-09-11T09:26:11.729Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34599/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ApronHookRailPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34599/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34599/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34599/v1/model.glb\" alt=\"Apron hook rail (Pet Shop and Grooming Salon)\" 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/34599/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/34599/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"34602","slug":"pet-shop-and-grooming-salon-hair-trap-floor-grate-db7577ff","title":"Hair trap floor grate (Pet Shop and Grooming Salon)","summary":"A stainless nine bar grate in a coved grey kerb over a dark trap, sitting 50 mm proud of a salon floor with two teal lifting eyes. The grate is fixed and does not lift.","description":"A stainless nine bar grate in a coved grey kerb over a dark trap, sitting 50 mm proud of a salon floor with two teal lifting eyes. The grate is fixed and does not lift. Dimensions 0.62 by 0.06 by 0.42 m (X by Y by Z). Metre units, +Y up, customer or user side toward +Z, resting on y=0. Every ticket, sign face and label is blank: no shop name, brand or trade dress anywhere in this pack, and no animal geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/pet-shop-and-grooming-salon-hair-trap-floor-grate-db7577ff","cdnUrl":"https://cdn.3dassets.dev/assets/34602/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-hair-trap-floor-grate-db7577ff","thumbnailUrl":"https://cdn.3dassets.dev/assets/34602/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34602/v1/poster.webp","blurhash":"U48qQsxv00xt%NxuRjV@00M{_NM{9ED%t8kD","category":{"slug":"buildings","title":"Buildings & Architecture"},"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":45500,"triangles":1040,"vertices":2275,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.3100000023841858,0.000019867718060589956,-0.21000946235310392],"max":[0.3100000023841858,0.05900774075062809,0.21000946235310392]},"sizeMeters":[0.62,0.059,0.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:13.380Z","updatedAt":"2026-09-11T09:26:13.512Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34602/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HairTrapFloorGratePetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34602/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34602/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34602/v1/model.glb\" alt=\"Hair trap floor grate (Pet Shop and Grooming Salon)\" 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/34602/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/34602/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}]}}