{"data":{"id":277,"slug":"pet-shop-and-grooming-salon","title":"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.","description":"A realistic modern pet shop and grooming salon in metre units. The retail side is built from a 1.25 m double sided gondola bay stocked with sacks, tins and cartons, a toy and accessory variant on the same ports, a ply cosmetic variant, an end cap, 1 m wall shelving bays, a chest freezer with a glazed lift lid, three bulk food hoppers with pour flaps, a floor standing accessory rail of leads and collars, a toy bin display, the till counter with its card reader, impulse rack and cash drawer, basket stack, trolley, queue rail, blank price signs and a dressed window platform, all on 1.5 m wall, door and floor modules. The livestock fixtures are display stock and ship EMPTY: an aquarium rack of six lit tanks with no water and no fish, a four pen habitat unit with no occupants, a bird cage on a wheeled stand with its door closed, a vivarium stack that is empty and unheated, plus bedding bales and feed bins with scoops. The salon adds a grooming table that rises on its hydraulic post with an open restraint loop, a bath tub with a loading ramp and a tilting shower arm, coupled banks of four empty drying cages, a stand dryer, clipper, scissors and brush trays, a towel shelf, an apron rail, a pedal bin, a cleaning trolley and a hair trap grate. Doors, lids, flaps, the till drawer, the table lift, the shower arm and the castors ship rigid node transform clips. Leads, hoses, cables, aprons, towels, the cage fans and the bird cage door are deliberately static: a flexible or fixed linkage is not reachable with one rigid node. There are no animals anywhere in this pack and nothing depicts an animal in distress. No real shop, brand or trade dress appears; every ticket and sign face is blank. CC0 geometry prepared for human review.","url":"https://3dassets.dev/packs/pet-shop-and-grooming-salon","coverUrl":"https://cdn.3dassets.dev/assets/34605/v1/poster.webp","assetCount":39,"aiGenerated":true,"aiGeneratedAssetCount":39,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":9253612,"totalTriangles":228142,"starterScene":{"id":"34605","slug":"pet-shop-and-grooming-salon-pet-shop-and-61b4cc32-starter-scene","title":"Pet shop floor and grooming salon (Pet Shop and Grooming Salon)","summary":"A working pet shop laid out as one place: a three bay gondola run down the middle of the floor stocked with sacks, tins and cartons and closed by an end cap, a run of wall shelving and the accessory rail along one side, the empty aquarium rack, vivarium stack, habitat unit...","description":"A working pet shop laid out as one place: a three bay gondola run down the middle of the floor stocked with sacks, tins and cartons and closed by an end cap, a run of wall shelving and the accessory rail along one side, the empty aquarium rack, vivarium stack, habitat unit and bird cage along the other, the chest freezer, bulk dispensers, feed bins and bedding bales across the back, and the till, queue rail, baskets, trolleys, toy bins and window platform by the door. Through the partition wall the grooming salon has the hydraulic table with a tool tray on it, the bath with its ramp and shower arm, a wall of three coupled drying cage banks, the stand dryer, the cleaning trolley, the towel shelf, the apron rail, bins and floor grates. Floor and walls are the pack own modules, shop grey in front and salon grey behind. Every tank, pen and cage is empty: there are no animals anywhere in this pack.","status":"published","url":"https://3dassets.dev/assets/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","thumbnailUrl":"https://cdn.3dassets.dev/assets/34605/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34605/v1/poster.webp","blurhash":"U6Ep4o~p00oh_4ITMx%M004nkVV@00%gozV@","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":4304412,"triangles":108622,"vertices":238936,"meshes":257,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-3.8230289625329146,0.000040894355662998705,-4.573028962532915],"max":[3.8000213516976773,2.839999952316284,4.5769676808984645]},"sizeMeters":[7.623,2.84,9.15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:17.082Z","updatedAt":"2026-09-11T09:26:17.225Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34605/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PetShopFloorAndGroomingSalonPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34605/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34605/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34605/v1/model.glb\" alt=\"Pet shop floor and grooming salon (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/34605/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/34605/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"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":"34568","slug":"pet-shop-and-grooming-salon-gondola-shelving-unit-ply-7b957214","title":"Gondola shelving unit, ply carcass (Pet Shop and Grooming Salon)","summary":"The gondola in birch ply instead of grey steel, for a boutique or refill shop fit out. Geometry, deck heights and ports are identical to the steel bay.","description":"The gondola in birch ply instead of grey steel, for a boutique or refill shop fit out. Geometry, deck heights and ports are identical to the steel bay. 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-shelving-unit-ply-7b957214","cdnUrl":"https://cdn.3dassets.dev/assets/34568/v1/model.glb","downloadUrl":"https://3dassets.dev/download/pet-shop-and-grooming-salon-gondola-shelving-unit-ply-7b957214","thumbnailUrl":"https://cdn.3dassets.dev/assets/34568/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34568/v1/poster.webp","blurhash":"U9Frka?t00Di~V%KIVE200i{?aNLt5s;R,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":483504,"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.403Z","updatedAt":"2026-09-11T09:25:53.546Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34568/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GondolaShelvingUnitPlyCarcassPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34568/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34568/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34568/v1/model.glb\" alt=\"Gondola shelving unit, ply carcass (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/34568/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/34568/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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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":"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);"}},{"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":"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":"34605","slug":"pet-shop-and-grooming-salon-pet-shop-and-61b4cc32-starter-scene","title":"Pet shop floor and grooming salon (Pet Shop and Grooming Salon)","summary":"A working pet shop laid out as one place: a three bay gondola run down the middle of the floor stocked with sacks, tins and cartons and closed by an end cap, a run of wall shelving and the accessory rail along one side, the empty aquarium rack, vivarium stack, habitat unit...","description":"A working pet shop laid out as one place: a three bay gondola run down the middle of the floor stocked with sacks, tins and cartons and closed by an end cap, a run of wall shelving and the accessory rail along one side, the empty aquarium rack, vivarium stack, habitat unit and bird cage along the other, the chest freezer, bulk dispensers, feed bins and bedding bales across the back, and the till, queue rail, baskets, trolleys, toy bins and window platform by the door. Through the partition wall the grooming salon has the hydraulic table with a tool tray on it, the bath with its ramp and shower arm, a wall of three coupled drying cage banks, the stand dryer, the cleaning trolley, the towel shelf, the apron rail, bins and floor grates. Floor and walls are the pack own modules, shop grey in front and salon grey behind. Every tank, pen and cage is empty: there are no animals anywhere in this pack.","status":"published","url":"https://3dassets.dev/assets/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","thumbnailUrl":"https://cdn.3dassets.dev/assets/34605/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/34605/v1/poster.webp","blurhash":"U6Ep4o~p00oh_4ITMx%M004nkVV@00%gozV@","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":4304412,"triangles":108622,"vertices":238936,"meshes":257,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-3.8230289625329146,0.000040894355662998705,-4.573028962532915],"max":[3.8000213516976773,2.839999952316284,4.5769676808984645]},"sizeMeters":[7.623,2.84,9.15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T09:26:17.082Z","updatedAt":"2026-09-11T09:26:17.225Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/34605/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PetShopFloorAndGroomingSalonPetShopAndGroomingSalon(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/34605/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/34605/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/34605/v1/model.glb\" alt=\"Pet shop floor and grooming salon (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/34605/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/34605/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"pet-shop-and-grooming-salon","title":"Pet Shop and Grooming Salon","url":"https://3dassets.dev/demos/pet-shop-and-grooming-salon"}}}