{"data":{"id":197,"slug":"police-station-and-detective-office","title":"Police Station and Detective Office","summary":"A modern police station on a 1.2 m partition grid and the private detective office beside it: shell modules, squad room desks, an interview room with a one way mirror, a barred cell, the evidence store, and a period noir office.","description":"Two connected settings a developer can build a whole procedural story in. The station is a 1.2 m partition system: plain, glazed and door wall modules, corner and end posts, floor and ceiling tiles, a front counter bay, barred cell walls and a cell door that swings, and a one way mirror section for the interview room, all ported on the same grid so any plan closes into real rooms. The squad room fills with desks and dividers, task chairs, four drawer filing cabinets whose drawers pull, monitor arms, keyboards, telephones, a printer, a mobile whiteboard, a six door locker bank, a notice board, a radio charging rack, a water cooler and a coffee machine. The custody and evidence end adds an interrogation table and fixed chairs, an interview recording unit with turning tape reels, a swing arm lamp, a holding bench, evidence shelving, boxes with lids, bag sets, case file stacks, a fingerprint kit, a camera on a tripod and numbered markers. The noir half is a separate period set: a roll top desk with six working drawers, a banker lamp, a timber filing cabinet, a typewriter, a rotary telephone, a drinks tray, a coat stand with a hat, a blind window wall, a turning ceiling fan and its own door module. Rigid node transform clips only, no skinning. Every crest, force name and case file is invented: no real police service or livery is reproduced. Original AI assisted CC0 geometry.","url":"https://3dassets.dev/packs/police-station-and-detective-office","coverUrl":"https://cdn.3dassets.dev/assets/29991/v1/poster.webp","assetCount":51,"aiGenerated":true,"aiGeneratedAssetCount":51,"aiModels":["Claude Fable 5.1"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":5647060,"totalTriangles":143088,"starterScene":{"id":"29991","slug":"police-station-and-detective-office-stat-888d4012-starter-scene","title":"Station Floor (Police Station and Detective Office)","summary":"A police station floor built from the pack 1.2 m partition modules: a squad room of desks and lockers, the private detective office behind its own door with a roll top desk and a turning ceiling fan, an evidence store, an interview room behind a one way mirror, a barred cell,...","description":"A police station floor built from the pack 1.2 m partition modules: a squad room of desks and lockers, the private detective office behind its own door with a roll top desk and a turning ceiling fan, an evidence store, an interview room behind a one way mirror, a barred cell, and a public lobby across the front counter. The ceiling is left off so the rooms read from above.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-stat-888d4012-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/29991/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-stat-888d4012-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/29991/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29991/v1/poster.webp","blurhash":"U5EV.{?b00M{_3%MM|IU00IU~qWB00IURjof","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":2782932,"triangles":70990,"vertices":155399,"meshes":245,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-7.353973485879252,-0.0000017705703253198535,-5.483973485879253],"max":[7.353973485879252,3.0500490999221803,5.510014373936751]},"sizeMeters":[14.708,3.05,10.994],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:03.218Z","updatedAt":"2026-09-08T05:12:03.332Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29991/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationFloorPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29991/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29991/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29991/v1/model.glb\" alt=\"Station Floor (Police Station and Detective Office)\" 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/29991/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/29991/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"29941","slug":"police-station-and-detective-office-partition-wall-pla-eac2cc8e","title":"Station partition wall, plain (Police Station and Detective Office)","summary":"A 1.2 m painted station partition module, 2.7 m tall on a 100 mm stud, with rubber skirting both faces, a surface cable trunking run and two socket boxes.","description":"A 1.2 m painted station partition module, 2.7 m tall on a 100 mm stud, with rubber skirting both faces, a surface cable trunking run and two socket boxes. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-partition-wall-pla-eac2cc8e","cdnUrl":"https://cdn.3dassets.dev/assets/29941/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-partition-wall-pla-eac2cc8e","thumbnailUrl":"https://cdn.3dassets.dev/assets/29941/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29941/v1/poster.webp","blurhash":"U8Dvfz-;008__3xu9FD%00Rj~qxu-;t7IUM{","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":23912,"triangles":496,"vertices":1127,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000006563963324934807,-0.07002167092413907],"max":[0.6000000238418579,2.700000047683716,0.07993118064125884]},"sizeMeters":[1.2,2.7,0.15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:52.469Z","updatedAt":"2026-09-08T05:11:52.565Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29941/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationPartitionWallPlainPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29941/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29941/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29941/v1/model.glb\" alt=\"Station partition wall, plain (Police Station and Detective Office)\" 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/29941/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/29941/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29943","slug":"police-station-and-detective-office-partition-wall-gla-ad2904bf","title":"Station partition wall, glazed (Police Station and Detective Office)","summary":"A 1.2 m glazed station partition module: a solid dado to 1.0 m, an aluminium window frame with a centre mullion and two panes to 2.4 m, a laminate cill and a solid head.","description":"A 1.2 m glazed station partition module: a solid dado to 1.0 m, an aluminium window frame with a centre mullion and two panes to 2.4 m, a laminate cill and a solid head. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-partition-wall-gla-ad2904bf","cdnUrl":"https://cdn.3dassets.dev/assets/29943/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-partition-wall-gla-ad2904bf","thumbnailUrl":"https://cdn.3dassets.dev/assets/29943/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29943/v1/poster.webp","blurhash":"U9CP^oxu00IAxut7M{IUD%Rj%Nxu~qxu4.IU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":41600,"triangles":880,"vertices":1989,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000214038298448,-0.000006563963324934807,-0.07002167092413907],"max":[0.6000214038298448,2.700000047683716,0.08501479997906064]},"sizeMeters":[1.2,2.7,0.155],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:52.508Z","updatedAt":"2026-09-08T05:11:52.618Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29943/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationPartitionWallGlazedPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29943/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29943/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29943/v1/model.glb\" alt=\"Station partition wall, glazed (Police Station and Detective Office)\" 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/29943/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/29943/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29944","slug":"police-station-and-detective-office-partition-wall-doo-9748edad","title":"Station partition wall, door module (Police Station and Detective Office)","summary":"A 1.2 m station partition module with a 900 by 2100 mm doorway: lining boards, architraves proud of both faces, three hinges, a closer arm and a flush painted leaf with a vision panel and a lever handle as one named node.","description":"A 1.2 m station partition module with a 900 by 2100 mm doorway: lining boards, architraves proud of both faces, three hinges, a closer arm and a flush painted leaf with a vision panel and a lever handle as one named node. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: office-door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-partition-wall-doo-9748edad","cdnUrl":"https://cdn.3dassets.dev/assets/29944/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-partition-wall-doo-9748edad","thumbnailUrl":"https://cdn.3dassets.dev/assets/29944/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29944/v1/poster.webp","blurhash":"U7DS:uIU00-;~qog4nRP4nay-;og%Mt7IUM{","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":79160,"triangles":1768,"vertices":3856,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5999130328428387,0,-0.06996993865770831],"max":[0.5999130328428387,2.700000047683716,0.11001437393675068]},"sizeMeters":[1.2,2.7,0.18],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:52.777Z","updatedAt":"2026-09-08T05:11:52.883Z","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/29944/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 StationPartitionWallDoorModulePoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29944/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/29944/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29944/v1/model.glb\" alt=\"Station partition wall, door module (Police Station and Detective Office)\" 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/29944/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/29944/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29945","slug":"police-station-and-detective-office-wall-corner-post-c7fb98f9","title":"Partition corner post (Police Station and Detective Office)","summary":"A 140 mm partition corner post, 2.7 m tall, turning a wall run through ninety degrees, with aluminium corner guards on both exposed arrises.","description":"A 140 mm partition corner post, 2.7 m tall, turning a wall run through ninety degrees, with aluminium corner guards on both exposed arrises. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-wall-corner-post-c7fb98f9","cdnUrl":"https://cdn.3dassets.dev/assets/29945/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-wall-corner-post-c7fb98f9","thumbnailUrl":"https://cdn.3dassets.dev/assets/29945/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29945/v1/poster.webp","blurhash":"U17nRR~q0000RjWBoet7IUWB%LxuogayRjof","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":20616,"triangles":448,"vertices":994,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.07992535174949385,0,-0.08397348587925238],"max":[0.08392535240514494,2.701200008392334,0.08397348587925238]},"sizeMeters":[0.164,2.701,0.168],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:52.818Z","updatedAt":"2026-09-08T05:11:52.924Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29945/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PartitionCornerPostPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29945/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29945/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29945/v1/model.glb\" alt=\"Partition corner post (Police Station and Detective Office)\" 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/29945/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/29945/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29946","slug":"police-station-and-detective-office-wall-end-post-e804b23c","title":"Partition run end post (Police Station and Detective Office)","summary":"An 80 mm partition end post, 2.7 m tall, closing a wall run against a structural wall, with a glazing channel on its left face and three fixings.","description":"An 80 mm partition end post, 2.7 m tall, closing a wall run against a structural wall, with a glazing channel on its left face and three fixings. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-wall-end-post-e804b23c","cdnUrl":"https://cdn.3dassets.dev/assets/29946/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-wall-end-post-e804b23c","thumbnailUrl":"https://cdn.3dassets.dev/assets/29946/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29946/v1/poster.webp","blurhash":"U27-Zw~q0000j]ofaxRj9FM{?b-;ogofWBRj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":19732,"triangles":436,"vertices":949,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.05593638183400624,0,-0.06002607527203595],"max":[0.0499363808505296,2.701200008392334,0.06895980325773884]},"sizeMeters":[0.106,2.701,0.129],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:53.462Z","updatedAt":"2026-09-08T05:11:53.569Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29946/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PartitionRunEndPostPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29946/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29946/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29946/v1/model.glb\" alt=\"Partition run end post (Police Station and Detective Office)\" 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/29946/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/29946/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29947","slug":"police-station-and-detective-office-floor-tile-vinyl-978ac478","title":"Vinyl floor slab, 1.2 m (Police Station and Detective Office)","summary":"A 1.2 m square floor slab 60 mm thick finished in welded sheet vinyl, with seam beads on its right and front edges so tiled slabs never double a seam up.","description":"A 1.2 m square floor slab 60 mm thick finished in welded sheet vinyl, with seam beads on its right and front edges so tiled slabs never double a seam up. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-floor-tile-vinyl-978ac478","cdnUrl":"https://cdn.3dassets.dev/assets/29947/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-floor-tile-vinyl-978ac478","thumbnailUrl":"https://cdn.3dassets.dev/assets/29947/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29947/v1/poster.webp","blurhash":"U8D0Jx-;00V[t7axj@of00IU_4WBRiofRjRj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":9828,"triangles":176,"vertices":398,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.0000017705703253198535,-0.6000000238418579],"max":[0.6000000238418579,0.06216528866845136,0.6000000238418579]},"sizeMeters":[1.2,0.062,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:53.901Z","updatedAt":"2026-09-08T05:11:53.998Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29947/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function VinylFloorSlab12MPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29947/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29947/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29947/v1/model.glb\" alt=\"Vinyl floor slab, 1.2 m (Police Station and Detective Office)\" 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/29947/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/29947/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29948","slug":"police-station-and-detective-office-floor-tile-carpet-e52bfbb0","title":"Carpet floor slab, 1.2 m (Police Station and Detective Office)","summary":"The same 1.2 m floor slab finished in office carpet tile with a plastic edge trim on its right and front edges, for squad rooms and the private office.","description":"The same 1.2 m floor slab finished in office carpet tile with a plastic edge trim on its right and front edges, for squad rooms and the private office. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-floor-tile-carpet-e52bfbb0","cdnUrl":"https://cdn.3dassets.dev/assets/29948/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-floor-tile-carpet-e52bfbb0","thumbnailUrl":"https://cdn.3dassets.dev/assets/29948/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29948/v1/poster.webp","blurhash":"U4Bg9]?b00R%IWWAxut700D%_4Rj^%tRIBM{","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":12944,"triangles":256,"vertices":562,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.0000017705703253198535,-0.6000000238418579],"max":[0.6000000238418579,0.06396441631918179,0.6000000238418579]},"sizeMeters":[1.2,0.064,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:54.023Z","updatedAt":"2026-09-08T05:11:54.133Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29948/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CarpetFloorSlab12MPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29948/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29948/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29948/v1/model.glb\" alt=\"Carpet floor slab, 1.2 m (Police Station and Detective Office)\" 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/29948/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/29948/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29949","slug":"police-station-and-detective-office-ceiling-tile-plain-47dd8fdd","title":"Suspended ceiling tile, 1.2 m (Police Station and Detective Office)","summary":"A 1.2 m suspended ceiling module: an aluminium tee grid on all four edges carrying a perforated mineral tile. Placed at ceiling height; the model itself is built from y=0 up.","description":"A 1.2 m suspended ceiling module: an aluminium tee grid on all four edges carrying a perforated mineral tile. Placed at ceiling height; the model itself is built from y=0 up. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-ceiling-tile-plain-47dd8fdd","cdnUrl":"https://cdn.3dassets.dev/assets/29949/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-ceiling-tile-plain-47dd8fdd","thumbnailUrl":"https://cdn.3dassets.dev/assets/29949/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29949/v1/poster.webp","blurhash":"UDD9#Oxt00WB?bj[IUay00Rj~qfQ00WC%May","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":27092,"triangles":640,"vertices":1326,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.000003208262479736934,-0.6000000238418579],"max":[0.6000000238418579,0.07119678999706464,0.6000000238418579]},"sizeMeters":[1.2,0.071,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:54.059Z","updatedAt":"2026-09-08T05:11:54.175Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29949/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SuspendedCeilingTile12MPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29949/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29949/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29949/v1/model.glb\" alt=\"Suspended ceiling tile, 1.2 m (Police Station and Detective Office)\" 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/29949/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/29949/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29950","slug":"police-station-and-detective-office-ceiling-tile-light-8c5d37d6","title":"Suspended ceiling light panel (Police Station and Detective Office)","summary":"The same 1.2 m ceiling module carrying a recessed luminaire: a painted housing, an opal diffuser and two lamp gear trays. Unlit geometry; the light itself is the consumer's.","description":"The same 1.2 m ceiling module carrying a recessed luminaire: a painted housing, an opal diffuser and two lamp gear trays. Unlit geometry; the light itself is the consumer's. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-ceiling-tile-light-8c5d37d6","cdnUrl":"https://cdn.3dassets.dev/assets/29950/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-ceiling-tile-light-8c5d37d6","thumbnailUrl":"https://cdn.3dassets.dev/assets/29950/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29950/v1/poster.webp","blurhash":"UDC?r_xa00WB?bj[IUay00Rj~qfQ00WV%May","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":32744,"triangles":768,"vertices":1610,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.000003208262479736934,-0.6000000238418579],"max":[0.6000000238418579,0.07119678999706464,0.6000000238418579]},"sizeMeters":[1.2,0.071,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:54.189Z","updatedAt":"2026-09-08T05:11:54.317Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29950/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SuspendedCeilingLightPanelPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29950/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29950/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29950/v1/model.glb\" alt=\"Suspended ceiling light panel (Police Station and Detective Office)\" 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/29950/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/29950/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29951","slug":"police-station-and-detective-office-front-counter-bay-f081466a","title":"Front counter bay with security screen (Police Station and Detective Office)","summary":"A 2.4 m front counter bay: a laminate transaction top at 1.12 m over a painted body, a staff-side knee recess, a public writing ledge on two legs and a full-height laminated security screen with a speech grille and a document tray.","description":"A 2.4 m front counter bay: a laminate transaction top at 1.12 m over a painted body, a staff-side knee recess, a public writing ledge on two legs and a full-height laminated security screen with a speech grille and a document tray. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-front-counter-bay-f081466a","cdnUrl":"https://cdn.3dassets.dev/assets/29951/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-front-counter-bay-f081466a","thumbnailUrl":"https://cdn.3dassets.dev/assets/29951/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29951/v1/poster.webp","blurhash":"UBE3J0-:00E1Io-;t79F00Io~q%2?aM{M|ax","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":60060,"triangles":1388,"vertices":2950,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.2200000286102295,-2.8360729287246755e-7,-0.5799620175672144],"max":[1.2200000286102295,2.6500000953674316,0.5799977166520363]},"sizeMeters":[2.44,2.65,1.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:54.437Z","updatedAt":"2026-09-08T05:11:54.541Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29951/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FrontCounterBayWithSecurityScreenPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29951/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29951/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29951/v1/model.glb\" alt=\"Front counter bay with security screen (Police Station and Detective Office)\" 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/29951/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/29951/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29952","slug":"police-station-and-detective-office-cell-wall-barred-578b2f09","title":"Holding cell barred wall section (Police Station and Detective Office)","summary":"A 1.2 m holding cell wall of round steel bars in a bolted painted frame, 2.7 m tall, taking the same wall ports as the painted partitions so a cell closes against them.","description":"A 1.2 m holding cell wall of round steel bars in a bolted painted frame, 2.7 m tall, taking the same wall ports as the painted partitions so a cell closes against them. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-cell-wall-barred-578b2f09","cdnUrl":"https://cdn.3dassets.dev/assets/29952/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-cell-wall-barred-578b2f09","thumbnailUrl":"https://cdn.3dassets.dev/assets/29952/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29952/v1/poster.webp","blurhash":"U1BWf0~q0000~q?b9F00?It800D%~q?b9F00","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":34504,"triangles":768,"vertices":1742,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999130328428387,0,-0.04499038746407388],"max":[0.5999130328428387,2.700000047683716,0.04499038746407388]},"sizeMeters":[1.2,2.7,0.09],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:54.457Z","updatedAt":"2026-09-08T05:11:54.564Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29952/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HoldingCellBarredWallSectionPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29952/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29952/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29952/v1/model.glb\" alt=\"Holding cell barred wall section (Police Station and Detective Office)\" 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/29952/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/29952/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29954","slug":"police-station-and-detective-office-cell-door-barred-47ec1f24","title":"Holding cell barred door section (Police Station and Detective Office)","summary":"A 1.2 m holding cell door module: a welded barred grille leaf 900 mm wide as one named node, with a lock box, a grab bar, two barrel hinges and a keep on the closing jamb.","description":"A 1.2 m holding cell door module: a welded barred grille leaf 900 mm wide as one named node, with a lock box, a grab bar, two barrel hinges and a keep on the closing jamb. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: cell-door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-cell-door-barred-47ec1f24","cdnUrl":"https://cdn.3dassets.dev/assets/29954/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-cell-door-barred-47ec1f24","thumbnailUrl":"https://cdn.3dassets.dev/assets/29954/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29954/v1/poster.webp","blurhash":"U6DvfyM{00xu~q%M4n9F9Fayozs:-;ofIUMx","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":49000,"triangles":1056,"vertices":2344,"meshes":5,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5999130328428387,0,-0.05502638493518727],"max":[0.5999130328428387,2.700000047683716,0.06899212453941199]},"sizeMeters":[1.2,2.7,0.124],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:55.175Z","updatedAt":"2026-09-08T05:11:55.293Z","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/29954/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 HoldingCellBarredDoorSectionPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29954/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/29954/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29954/v1/model.glb\" alt=\"Holding cell barred door section (Police Station and Detective Office)\" 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/29954/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/29954/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29953","slug":"police-station-and-detective-office-one-way-mirror-wal-9d16e169","title":"One-way mirror wall section (Police Station and Detective Office)","summary":"A 1.2 m interview room wall module carrying a 960 by 1350 mm one-way mirror in a deep painted reveal, with a chrome bead frame on the observation face.","description":"A 1.2 m interview room wall module carrying a 960 by 1350 mm one-way mirror in a deep painted reveal, with a chrome bead frame on the observation face. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, 60 mm floor slabs and 70 mm ceiling tiles, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-one-way-mirror-wal-9d16e169","cdnUrl":"https://cdn.3dassets.dev/assets/29953/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-one-way-mirror-wal-9d16e169","thumbnailUrl":"https://cdn.3dassets.dev/assets/29953/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29953/v1/poster.webp","blurhash":"U5DJS7?b0000~qx]8_Di00WB_Nt7~q%M9F9F","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":36808,"triangles":784,"vertices":1772,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,-0.000006563963324934807,-0.07002167092413907],"max":[0.6000000238418579,2.700000047683716,0.07002167092413907]},"sizeMeters":[1.2,2.7,0.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:55.160Z","updatedAt":"2026-09-08T05:11:55.275Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29953/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OneWayMirrorWallSectionPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29953/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29953/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29953/v1/model.glb\" alt=\"One-way mirror wall section (Police Station and Detective Office)\" 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/29953/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/29953/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29955","slug":"police-station-and-detective-office-squad-desk-with-di-aa8a4319","title":"Squad room desk with divider (Police Station and Detective Office)","summary":"A 1.6 by 0.8 m squad room desk at 730 mm: a laminate top with a cable grommet, panel ends on glides, a modesty panel, an under-desk cable tray, a pencil drawer on a named node and a 400 mm fabric divider on the back edge.","description":"A 1.6 by 0.8 m squad room desk at 730 mm: a laminate top with a cable grommet, panel ends on glides, a modesty panel, an under-desk cable tray, a pencil drawer on a named node and a 400 mm fabric divider on the back edge. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: desk-drawer-1. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-squad-desk-with-di-aa8a4319","cdnUrl":"https://cdn.3dassets.dev/assets/29955/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-squad-desk-with-di-aa8a4319","thumbnailUrl":"https://cdn.3dassets.dev/assets/29955/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29955/v1/poster.webp","blurhash":"UEF=~@9F4m-;_4-;9E9F00WCRPRj4nIU%N-p","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":103808,"triangles":2360,"vertices":5126,"meshes":8,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.800000011920929,-0.000029603450129301462,-0.4049551741089569],"max":[0.800000011920929,1.1300462412049863,0.4019925832223545]},"sizeMeters":[1.6,1.13,0.807],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:55.574Z","updatedAt":"2026-09-08T05:11:55.667Z","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/29955/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 SquadRoomDeskWithDividerPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29955/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/29955/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29955/v1/model.glb\" alt=\"Squad room desk with divider (Police Station and Detective Office)\" 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/29955/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/29955/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29956","slug":"police-station-and-detective-office-office-chair-task-fea6fec9","title":"Office task chair (Police Station and Detective Office)","summary":"A five-star office task chair on rubber castors: a gas lift and mechanism housing, a piped seat pad at 460 mm, a curved spine carrying an upholstered back with a lumbar band, and two padded arms.","description":"A five-star office task chair on rubber castors: a gas lift and mechanism housing, a piped seat pad at 460 mm, a curved spine carrying an upholstered back with a lumbar band, and two padded arms. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-office-chair-task-fea6fec9","cdnUrl":"https://cdn.3dassets.dev/assets/29956/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-office-chair-task-fea6fec9","thumbnailUrl":"https://cdn.3dassets.dev/assets/29956/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29956/v1/poster.webp","blurhash":"U584xrMx00%h.AD$IT_N9ERO%N%gWTxuRkNF","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":105620,"triangles":2408,"vertices":5415,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.3150238775877177,-0.000005924243370935417,-0.3542641317855851],"max":[0.34200241830138906,1.0827090740203857,0.3390486538410187]},"sizeMeters":[0.657,1.083,0.693],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:55.712Z","updatedAt":"2026-09-08T05:11:55.821Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29956/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OfficeTaskChairPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29956/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29956/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29956/v1/model.glb\" alt=\"Office task chair (Police Station and Detective Office)\" 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/29956/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/29956/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29957","slug":"police-station-and-detective-office-filing-cabinet-4-d-fb14c501","title":"Filing cabinet, four drawer (Police Station and Detective Office)","summary":"A 470 mm four drawer steel filing cabinet, 1.32 m tall: each drawer is a real box on a named slide node with a recessed pull rail, over a recessed plinth, with an anti-tilt interlock plate.","description":"A 470 mm four drawer steel filing cabinet, 1.32 m tall: each drawer is a real box on a named slide node with a recessed pull rail, over a recessed plinth, with an anti-tilt interlock plate. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: drawer-1, drawer-2, drawer-3, drawer-4. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-filing-cabinet-4-d-fb14c501","cdnUrl":"https://cdn.3dassets.dev/assets/29957/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-filing-cabinet-4-d-fb14c501","thumbnailUrl":"https://cdn.3dassets.dev/assets/29957/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29957/v1/poster.webp","blurhash":"UEFY$4?b00D%~qRj9Fxu00IU%M%M-;WAIUt7","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":38184,"triangles":2048,"vertices":4630,"meshes":11,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.23498643005979228,-0.000005496029453884443,-0.31000703350052855],"max":[0.23498643005979228,1.3200000524520874,0.3319925757717739]},"sizeMeters":[0.47,1.32,0.642],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:55.723Z","updatedAt":"2026-09-08T05:11:55.834Z","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/29957/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 FilingCabinetFourDrawerPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29957/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/29957/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29957/v1/model.glb\" alt=\"Filing cabinet, four drawer (Police Station and Detective Office)\" 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/29957/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/29957/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29958","slug":"police-station-and-detective-office-desk-monitor-arm-6f01e3ec","title":"Monitor on a desk arm (Police Station and Detective Office)","summary":"A 24 inch monitor on a clamped desk arm: a jaw clamp, a 300 mm post, a two-section arm and a bezelled panel with its VESA plate, standing 300 mm above the desk top.","description":"A 24 inch monitor on a clamped desk arm: a jaw clamp, a 300 mm post, a two-section arm and a bezelled panel with its VESA plate, standing 300 mm above the desk top. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-desk-monitor-arm-6f01e3ec","cdnUrl":"https://cdn.3dassets.dev/assets/29958/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-desk-monitor-arm-6f01e3ec","thumbnailUrl":"https://cdn.3dassets.dev/assets/29958/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29958/v1/poster.webp","blurhash":"UA8}3[_4004n?c-;WCD%00IU?v-;4TDi%M?b","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":22900,"triangles":482,"vertices":1071,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.27499862052037527,0,-0.07001665558071504],"max":[0.27499862052037527,0.6399999856948853,0.2553931754914086]},"sizeMeters":[0.55,0.64,0.325],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:55.877Z","updatedAt":"2026-09-08T05:11:55.996Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29958/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MonitorOnADeskArmPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29958/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29958/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29958/v1/model.glb\" alt=\"Monitor on a desk arm (Police Station and Detective Office)\" 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/29958/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/29958/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29960","slug":"police-station-and-detective-office-keyboard-and-mouse-c66c7574","title":"Keyboard and mouse set (Police Station and Detective Office)","summary":"A full-size keyboard with five modelled key rows and a chamfered case, beside a mouse with a scroll wheel on a fabric mat.","description":"A full-size keyboard with five modelled key rows and a chamfered case, beside a mouse with a scroll wheel on a fabric mat. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-keyboard-and-mouse-c66c7574","cdnUrl":"https://cdn.3dassets.dev/assets/29960/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-keyboard-and-mouse-c66c7574","thumbnailUrl":"https://cdn.3dassets.dev/assets/29960/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29960/v1/poster.webp","blurhash":"U371vKng4Txwsk_4afD$00j]_4RiNM00t6?w","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":62108,"triangles":1428,"vertices":3160,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2199999988079071,-0.0000015107874260606932,-0.07498104867636275],"max":[0.46000000834465027,0.03599694753518477,0.09000428138339374]},"sizeMeters":[0.68,0.036,0.165],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:56.135Z","updatedAt":"2026-09-08T05:11:56.251Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29960/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function KeyboardAndMouseSetPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29960/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29960/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29960/v1/model.glb\" alt=\"Keyboard and mouse set (Police Station and Detective Office)\" 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/29960/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/29960/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29959","slug":"police-station-and-detective-office-desk-telephone-dfffc350","title":"Desk telephone (Police Station and Detective Office)","summary":"A wedge-cased desk telephone: a twelve key pad, four line keys, a small display and a moulded handset resting in its cradle with a coiled cord stub.","description":"A wedge-cased desk telephone: a twelve key pad, four line keys, a small display and a moulded handset resting in its cradle with a coiled cord stub. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-desk-telephone-dfffc350","cdnUrl":"https://cdn.3dassets.dev/assets/29959/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-desk-telephone-dfffc350","thumbnailUrl":"https://cdn.3dassets.dev/assets/29959/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29959/v1/poster.webp","blurhash":"U57UM8_4009FRiayofWC009F_N%M%MoeWBt7","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":53488,"triangles":1188,"vertices":2662,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.1437527036666279,0.0000036632371055375645,-0.22168801724910736],"max":[0.0999988034692943,0.09999633825301057,0.10999999940395355]},"sizeMeters":[0.244,0.1,0.332],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:56.099Z","updatedAt":"2026-09-08T05:11:56.234Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29959/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DeskTelephonePoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29959/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29959/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29959/v1/model.glb\" alt=\"Desk telephone (Police Station and Detective Office)\" 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/29959/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/29959/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29961","slug":"police-station-and-detective-office-wall-clock-29250b22","title":"Wall clock (Police Station and Detective Office)","summary":"A 300 mm plastic-cased wall clock with a glazed dial, twelve markers, hour and minute hands and a rear hanging boss. Hang it on a wall; the model itself is built from y=0 up.","description":"A 300 mm plastic-cased wall clock with a glazed dial, twelve markers, hour and minute hands and a rear hanging boss. Hang it on a wall; the model itself is built from y=0 up. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-wall-clock-29250b22","cdnUrl":"https://cdn.3dassets.dev/assets/29961/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-wall-clock-29250b22","thumbnailUrl":"https://cdn.3dassets.dev/assets/29961/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29961/v1/poster.webp","blurhash":"UDD9*W_3004nt7t7t7Rj00D%~q-;RjM{Myxu","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":54724,"triangles":1312,"vertices":2751,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.15000000596046448,0,-0.04999830107655597],"max":[0.15000000596046448,0.30000001192092896,0.03449829946723056]},"sizeMeters":[0.3,0.3,0.084],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:56.815Z","updatedAt":"2026-09-08T05:11:56.915Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29961/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WallClockPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29961/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29961/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29961/v1/model.glb\" alt=\"Wall clock (Police Station and Detective Office)\" 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/29961/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/29961/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29962","slug":"police-station-and-detective-office-water-cooler-088f1fe2","title":"Water cooler (Police Station and Detective Office)","summary":"A 1.0 m floor-standing water cooler with two taps over a drip grille, a cup dispenser panel and an inverted 19 litre bottle on the crown.","description":"A 1.0 m floor-standing water cooler with two taps over a drip grille, a cup dispenser panel and an inverted 19 litre bottle on the crown. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-water-cooler-088f1fe2","cdnUrl":"https://cdn.3dassets.dev/assets/29962/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-water-cooler-088f1fe2","thumbnailUrl":"https://cdn.3dassets.dev/assets/29962/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29962/v1/poster.webp","blurhash":"U8BM}Yxu00D%R*ayoJj[00jt~qWBxuofM{WB","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":36112,"triangles":794,"vertices":1682,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.17001586986749034,0,-0.17001586986749034],"max":[0.17001586986749034,1.4700000286102295,0.24490111911127127]},"sizeMeters":[0.34,1.47,0.415],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:56.842Z","updatedAt":"2026-09-08T05:11:56.950Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29962/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaterCoolerPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29962/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29962/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29962/v1/model.glb\" alt=\"Water cooler (Police Station and Detective Office)\" 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/29962/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/29962/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29963","slug":"police-station-and-detective-office-coffee-machine-180073a1","title":"Filter coffee machine (Police Station and Detective Office)","summary":"A countertop filter coffee machine: a brewing head, a chrome drip tray, a control panel, a rear water tank and two cups on the warming plate.","description":"A countertop filter coffee machine: a brewing head, a chrome drip tray, a control panel, a rear water tank and two cups on the warming plate. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-coffee-machine-180073a1","cdnUrl":"https://cdn.3dassets.dev/assets/29963/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-coffee-machine-180073a1","thumbnailUrl":"https://cdn.3dassets.dev/assets/29963/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29963/v1/poster.webp","blurhash":"U9BWlI_4009Y~qRP9F-;4m4nIV_3IUIURjxu","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":55920,"triangles":1256,"vertices":2693,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.15000152287637367,0,-0.21119999885559082],"max":[0.15000152287637367,0.5468042153646473,0.2280000001192093]},"sizeMeters":[0.3,0.547,0.439],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:57.148Z","updatedAt":"2026-09-08T05:11:57.271Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29963/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FilterCoffeeMachinePoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29963/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29963/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29963/v1/model.glb\" alt=\"Filter coffee machine (Police Station and Detective Office)\" 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/29963/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/29963/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29964","slug":"police-station-and-detective-office-whiteboard-mobile-1e0eb149","title":"Mobile whiteboard (Police Station and Detective Office)","summary":"A 1.5 by 1.0 m double-sided mobile whiteboard on a castored A-frame, with a pen tray and three markers.","description":"A 1.5 by 1.0 m double-sided mobile whiteboard on a castored A-frame, with a pen tray and three markers. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-whiteboard-mobile-1e0eb149","cdnUrl":"https://cdn.3dassets.dev/assets/29964/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-whiteboard-mobile-1e0eb149","thumbnailUrl":"https://cdn.3dassets.dev/assets/29964/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29964/v1/poster.webp","blurhash":"UDC?o.%M00M{~q%M4n9F00of~qM{0Kf9_3t7","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":51156,"triangles":1152,"vertices":2541,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.000030518253672805196,-0.249969481490524],"max":[0.75,1.4999773409007837,0.249969481490524]},"sizeMeters":[1.5,1.5,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:57.366Z","updatedAt":"2026-09-08T05:11:57.494Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29964/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MobileWhiteboardPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29964/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29964/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29964/v1/model.glb\" alt=\"Mobile whiteboard (Police Station and Detective Office)\" 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/29964/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/29964/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29965","slug":"police-station-and-detective-office-office-printer-d98bbd85","title":"Multifunction office printer (Police Station and Detective Office)","summary":"A desktop multifunction printer: a scanner glass and lid, an angled control panel, an output tray holding a printed stack and a paper cassette front with a grab handle.","description":"A desktop multifunction printer: a scanner glass and lid, an angled control panel, an output tray holding a printed stack and a paper cassette front with a grab handle. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-office-printer-d98bbd85","cdnUrl":"https://cdn.3dassets.dev/assets/29965/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-office-printer-d98bbd85","thumbnailUrl":"https://cdn.3dassets.dev/assets/29965/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29965/v1/poster.webp","blurhash":"UFEfZ$?b00IU~qofM_xu00M{WBt7D%ayM{Rj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":42752,"triangles":928,"vertices":2043,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.25999999046325684,-0.0000021271256396282467,-0.25000212712563963],"max":[0.25999999046325684,0.5060017918596866,0.28759536147117615]},"sizeMeters":[0.52,0.506,0.538],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:57.420Z","updatedAt":"2026-09-08T05:11:57.532Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29965/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MultifunctionOfficePrinterPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29965/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29965/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29965/v1/model.glb\" alt=\"Multifunction office printer (Police Station and Detective Office)\" 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/29965/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/29965/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29966","slug":"police-station-and-detective-office-locker-bank-6-c5aef9ce","title":"Locker bank, six door (Police Station and Detective Office)","summary":"A six door personal locker bank, 900 mm wide and 1.79 m tall: each painted door is a named hinge node with louvre slots, a cam lock and a blank name card.","description":"A six door personal locker bank, 900 mm wide and 1.79 m tall: each painted door is a named hinge node with louvre slots, a cam lock and a blank name card. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: locker-door-1, locker-door-2, locker-door-3, locker-door-4, locker-door-5, locker-door-6. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-locker-bank-6-c5aef9ce","cdnUrl":"https://cdn.3dassets.dev/assets/29966/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-locker-bank-6-c5aef9ce","thumbnailUrl":"https://cdn.3dassets.dev/assets/29966/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29966/v1/poster.webp","blurhash":"UBFPHT-;008_~qxu9FIU00WB?aj[?bt7ITM{","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":49828,"triangles":3080,"vertices":6827,"meshes":26,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.4600244252081156,0,-0.24705691685086692],"max":[0.4600244252081156,1.8300000429153442,0.22899870674941686]},"sizeMeters":[0.92,1.83,0.476],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:57.549Z","updatedAt":"2026-09-08T05:11:57.656Z","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/29966/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 LockerBankSixDoorPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29966/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/29966/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29966/v1/model.glb\" alt=\"Locker bank, six door (Police Station and Detective Office)\" 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/29966/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/29966/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29967","slug":"police-station-and-detective-office-notice-board-70152d1d","title":"Cork notice board (Police Station and Detective Office)","summary":"A 1.2 by 0.9 m cork notice board in an aluminium frame, with six blank sheets pinned at slight angles.","description":"A 1.2 by 0.9 m cork notice board in an aluminium frame, with six blank sheets pinned at slight angles. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-notice-board-70152d1d","cdnUrl":"https://cdn.3dassets.dev/assets/29967/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-notice-board-70152d1d","thumbnailUrl":"https://cdn.3dassets.dev/assets/29967/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29967/v1/poster.webp","blurhash":"UAD]J5-:00Mx?b?GRj9G00WB~VogWCo#V[n#","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":33888,"triangles":764,"vertices":1632,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0.00002285908069415976,-0.01501510725883735],"max":[0.6000000238418579,0.899977117077448,0.025998184903087307]},"sizeMeters":[1.2,0.9,0.041],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:57.772Z","updatedAt":"2026-09-08T05:11:57.866Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29967/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CorkNoticeBoardPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29967/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29967/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29967/v1/model.glb\" alt=\"Cork notice board (Police Station and Detective Office)\" 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/29967/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/29967/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29968","slug":"police-station-and-detective-office-radio-charging-rac-b2796a6b","title":"Radio charging rack (Police Station and Detective Office)","summary":"A six pocket handheld radio charging rack with a back plate, four radios in their pockets with aerials and keypads, and a supply lead stub.","description":"A six pocket handheld radio charging rack with a back plate, four radios in their pockets with aerials and keypads, and a supply lead stub. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-radio-charging-rac-b2796a6b","cdnUrl":"https://cdn.3dassets.dev/assets/29968/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-radio-charging-rac-b2796a6b","thumbnailUrl":"https://cdn.3dassets.dev/assets/29968/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29968/v1/poster.webp","blurhash":"UFCP^pIo9E%M4n%Mx]M{00oe%MM{~qD%M{xv","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":135516,"triangles":3224,"vertices":7023,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.33000001311302185,0.000007896758207809329,-0.17000180010688637],"max":[0.33000001311302185,0.4141579388125832,0.1099926551968968]},"sizeMeters":[0.66,0.414,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:57.792Z","updatedAt":"2026-09-08T05:11:57.911Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29968/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RadioChargingRackPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29968/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29968/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29968/v1/model.glb\" alt=\"Radio charging rack (Police Station and Detective Office)\" 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/29968/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/29968/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29969","slug":"police-station-and-detective-office-evidence-board-b75ef0d8","title":"Evidence board with pinned photographs (Police Station and Detective Office)","summary":"A 1.6 by 1.1 m cork evidence board in an aluminium frame: eleven pinned photographs and notes standing off the cork on their own pins, joined by a twelve leg string web. The string is fixed geometry, since one rigid node cannot move a single leg of a web without tearing the rest.","description":"A 1.6 by 1.1 m cork evidence board in an aluminium frame: eleven pinned photographs and notes standing off the cork on their own pins, joined by a twelve leg string web. The string is fixed geometry, since one rigid node cannot move a single leg of a web without tearing the rest. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-evidence-board-b75ef0d8","cdnUrl":"https://cdn.3dassets.dev/assets/29969/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-evidence-board-b75ef0d8","thumbnailUrl":"https://cdn.3dassets.dev/assets/29969/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29969/v1/poster.webp","blurhash":"U7CPV7%500a*_N?IMy9a0MtL^cM_oZ%MW,Mw","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":106396,"triangles":2486,"vertices":5487,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.800000011920929,0.00003204816071755712,-0.03403833356064079],"max":[0.800000011920929,1.0999679756811402,0.03380338610590043]},"sizeMeters":[1.6,1.1,0.068],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:58.462Z","updatedAt":"2026-09-08T05:11:58.574Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29969/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EvidenceBoardWithPinnedPhotographsPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29969/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29969/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29969/v1/model.glb\" alt=\"Evidence board with pinned photographs (Police Station and Detective Office)\" 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/29969/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/29969/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29970","slug":"police-station-and-detective-office-case-file-stack-489c8d79","title":"Case file and folder stack (Police Station and Detective Office)","summary":"Four case folders: three squared up with their contents and tabbed labels, and one open on top with its cover folded back and two sheets under a clip.","description":"Four case folders: three squared up with their contents and tabbed labels, and one open on top with its cover folded back and two sheets under a clip. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-case-file-stack-489c8d79","cdnUrl":"https://cdn.3dassets.dev/assets/29970/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-case-file-stack-489c8d79","thumbnailUrl":"https://cdn.3dassets.dev/assets/29970/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29970/v1/poster.webp","blurhash":"UBCGDM^+009GX9IoV?%M009F~q-;i^-:t8D%","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":85460,"triangles":2048,"vertices":4389,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.23441004405106763,0.000005102935552808718,-0.39734071493148804],"max":[0.17489705631818037,0.16742904204566844,0.1408737301826477]},"sizeMeters":[0.409,0.167,0.538],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:58.555Z","updatedAt":"2026-09-08T05:11:58.650Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29970/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CaseFileAndFolderStackPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29970/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29970/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29970/v1/model.glb\" alt=\"Case file and folder stack (Police Station and Detective Office)\" 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/29970/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/29970/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29971","slug":"police-station-and-detective-office-evidence-bag-set-7e1da84c","title":"Sealed evidence bag set (Police Station and Detective Office)","summary":"Three sealed evidence pouches laid out on a bench, each with a gusset, a heat-sealed head strip and a blank continuity label, two of them showing the exhibit inside.","description":"Three sealed evidence pouches laid out on a bench, each with a gusset, a heat-sealed head strip and a blank continuity label, two of them showing the exhibit inside. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-evidence-bag-set-7e1da84c","cdnUrl":"https://cdn.3dassets.dev/assets/29971/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-evidence-bag-set-7e1da84c","thumbnailUrl":"https://cdn.3dassets.dev/assets/29971/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29971/v1/poster.webp","blurhash":"U68XOd%M00R*oMx]oyMx00IU_4t6bED$M{%g","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":66220,"triangles":1528,"vertices":3278,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.3059999942779541,-0.0000105314491081962,-0.11835076064464847],"max":[0.31896883249282837,0.04199421560189358,0.1859287411033849]},"sizeMeters":[0.625,0.042,0.304],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:58.828Z","updatedAt":"2026-09-08T05:11:58.928Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29971/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SealedEvidenceBagSetPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29971/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29971/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29971/v1/model.glb\" alt=\"Sealed evidence bag set (Police Station and Detective Office)\" 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/29971/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/29971/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29972","slug":"police-station-and-detective-office-evidence-box-03a7d873","title":"Evidence archive box (Police Station and Detective Office)","summary":"A 440 by 320 by 260 mm fibreboard evidence box with moulded hand grips, a lid on a named hinge node, a tamper tape strip and a blank exhibit label.","description":"A 440 by 320 by 260 mm fibreboard evidence box with moulded hand grips, a lid on a named hinge node, a tamper tape strip and a blank exhibit label. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: box-lid. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-evidence-box-03a7d873","cdnUrl":"https://cdn.3dassets.dev/assets/29972/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-evidence-box-03a7d873","thumbnailUrl":"https://cdn.3dassets.dev/assets/29972/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29972/v1/poster.webp","blurhash":"UEH.NR~q00M{4nxu-;M|00D%%LRjxut7xuay","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":22416,"triangles":432,"vertices":973,"meshes":4,"materials":2,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.2759999930858612,0.0000021322316987038015,-0.16699917631068098],"max":[0.2759999930858612,0.2959920316587,0.1669991728834139]},"sizeMeters":[0.552,0.296,0.334],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:59.025Z","updatedAt":"2026-09-08T05:11:59.152Z","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/29972/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 EvidenceArchiveBoxPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29972/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/29972/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29972/v1/model.glb\" alt=\"Evidence archive box (Police Station and Detective Office)\" 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/29972/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/29972/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29973","slug":"police-station-and-detective-office-evidence-shelving--c377c443","title":"Evidence shelving rack (Police Station and Detective Office)","summary":"A 1.2 by 2.0 m slotted steel evidence rack of four decks holding ten archive boxes with label pockets, and a blank shelf card on the top rail.","description":"A 1.2 by 2.0 m slotted steel evidence rack of four decks holding ten archive boxes with label pockets, and a blank shelf card on the top rail. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-evidence-shelving--c377c443","cdnUrl":"https://cdn.3dassets.dev/assets/29973/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-evidence-shelving--c377c443","thumbnailUrl":"https://cdn.3dassets.dev/assets/29973/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29973/v1/poster.webp","blurhash":"U7G95F_4004n-=-;IU9F00Ri?at7-;%MM_9F","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":157644,"triangles":3696,"vertices":8284,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000357952691865,0,-0.24991740297673806],"max":[0.6000357952691865,2.0179998874664307,0.24991740297673806]},"sizeMeters":[1.2,2.018,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:59.243Z","updatedAt":"2026-09-08T05:11:59.337Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29973/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EvidenceShelvingRackPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29973/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29973/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29973/v1/model.glb\" alt=\"Evidence shelving rack (Police Station and Detective Office)\" 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/29973/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/29973/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29975","slug":"police-station-and-detective-office-fingerprint-kit-ca-4894116c","title":"Fingerprint kit case (Police Station and Detective Office)","summary":"A 400 by 300 mm fingerprint kit case: three powder jars, two brushes and a roll of lifting tape in the tray, under a lid on a named hinge node with two catches and a carrying handle.","description":"A 400 by 300 mm fingerprint kit case: three powder jars, two brushes and a roll of lifting tape in the tray, under a lid on a named hinge node with two catches and a carrying handle. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: kit-lid. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-fingerprint-kit-ca-4894116c","cdnUrl":"https://cdn.3dassets.dev/assets/29975/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-fingerprint-kit-ca-4894116c","thumbnailUrl":"https://cdn.3dassets.dev/assets/29975/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29975/v1/poster.webp","blurhash":"U89Qv}_49EM|IAoMxvt700D%tRt7fjbYodRj","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":49820,"triangles":1056,"vertices":2283,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.20000000298023224,-0.000012666299208353993,-0.1499923726076915],"max":[0.20000000298023224,0.23763480495875575,0.16199585460871072]},"sizeMeters":[0.4,0.238,0.312],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:59.397Z","updatedAt":"2026-09-08T05:11:59.496Z","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/29975/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 FingerprintKitCasePoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29975/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/29975/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29975/v1/model.glb\" alt=\"Fingerprint kit case (Police Station and Detective Office)\" 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/29975/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/29975/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29974","slug":"police-station-and-detective-office-camera-on-tripod-60d9e444","title":"Scene camera on a tripod (Police Station and Detective Office)","summary":"A scene camera on a 1.25 m aluminium tripod: three braced legs with rubber feet and locking collars, a ball head and quick release plate, and a body with a grip, a prism housing, a hot shoe and a lens with its front element.","description":"A scene camera on a 1.25 m aluminium tripod: three braced legs with rubber feet and locking collars, a ball head and quick release plate, and a body with a grip, a prism housing, a hot shoe and a lens with its front element. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-camera-on-tripod-60d9e444","cdnUrl":"https://cdn.3dassets.dev/assets/29974/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-camera-on-tripod-60d9e444","thumbnailUrl":"https://cdn.3dassets.dev/assets/29974/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29974/v1/poster.webp","blurhash":"U26Hy8xu004nNGWBRixu00M{~q?a-;ayM|WB","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":62204,"triangles":1444,"vertices":3060,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.38173067569732666,0,-0.22710231267806902],"max":[0.38173067569732666,1.3913184542116082,0.4371023061215581]},"sizeMeters":[0.763,1.391,0.664],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:59.356Z","updatedAt":"2026-09-08T05:11:59.461Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29974/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SceneCameraOnATripodPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29974/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29974/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29974/v1/model.glb\" alt=\"Scene camera on a tripod (Police Station and Detective Office)\" 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/29974/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/29974/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29976","slug":"police-station-and-detective-office-evidence-marker-se-779aa2b9","title":"Numbered evidence marker set (Police Station and Detective Office)","summary":"A set of numbered evidence markers in plain card: three standing tents placed where they were dropped and four more folded flat in a stack. Blank faces, for a consumer to number as the scene needs.","description":"A set of numbered evidence markers in plain card: three standing tents placed where they were dropped and four more folded flat in a stack. Blank faces, for a consumer to number as the scene needs. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-evidence-marker-se-779aa2b9","cdnUrl":"https://cdn.3dassets.dev/assets/29976/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-evidence-marker-se-779aa2b9","thumbnailUrl":"https://cdn.3dassets.dev/assets/29976/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29976/v1/poster.webp","blurhash":"U9Bg3txu00IU-;?bM|9F00of~qj[D%4nxu_3","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":40292,"triangles":958,"vertices":2025,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.30638155341148376,0.000011015891579507775,-0.1570152902080538],"max":[0.48525089025497437,0.1323081215624534,0.16239669556159994]},"sizeMeters":[0.792,0.132,0.319],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:11:59.447Z","updatedAt":"2026-09-08T05:11:59.560Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29976/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NumberedEvidenceMarkerSetPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29976/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29976/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29976/v1/model.glb\" alt=\"Numbered evidence marker set (Police Station and Detective Office)\" 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/29976/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/29976/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29977","slug":"police-station-and-detective-office-interrogation-tabl-59840cd2","title":"Interrogation table (Police Station and Detective Office)","summary":"A 1.1 by 0.7 m interview table at 750 mm: a brushed top on a painted steel frame, two floor-fixed feet with anchor bolts and a cuff ring bolted through the top on the interviewee side.","description":"A 1.1 by 0.7 m interview table at 750 mm: a brushed top on a painted steel frame, two floor-fixed feet with anchor bolts and a cuff ring bolted through the top on the interviewee side. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-interrogation-tabl-59840cd2","cdnUrl":"https://cdn.3dassets.dev/assets/29977/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-interrogation-tabl-59840cd2","thumbnailUrl":"https://cdn.3dassets.dev/assets/29977/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29977/v1/poster.webp","blurhash":"UAEyf2?b00M{.8~qRi009FRkWBxt4nxu?bWB","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":36708,"triangles":832,"vertices":1808,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.550000011920929,-0.000021831463111410265,-0.3499710150014151],"max":[0.550000011920929,0.8119847813748666,0.3499710150014151]},"sizeMeters":[1.1,0.812,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:00.065Z","updatedAt":"2026-09-08T05:12:00.177Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29977/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InterrogationTablePoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29977/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29977/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29977/v1/model.glb\" alt=\"Interrogation table (Police Station and Detective Office)\" 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/29977/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/29977/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29978","slug":"police-station-and-detective-office-interrogation-chai-ab513b4e","title":"Floor-fixed interview chair (Police Station and Detective Office)","summary":"A floor-fixed interview chair: a bolted base plate with four anchors, a welded column, a painted pan seat and an upholstered back on two uprights. No castors and no adjustment.","description":"A floor-fixed interview chair: a bolted base plate with four anchors, a welded column, a painted pan seat and an upholstered back on two uprights. No castors and no adjustment. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-interrogation-chai-ab513b4e","cdnUrl":"https://cdn.3dassets.dev/assets/29978/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-interrogation-chai-ab513b4e","thumbnailUrl":"https://cdn.3dassets.dev/assets/29978/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29978/v1/poster.webp","blurhash":"U7CZeQxs00IrI[Di%0~q4mD%%g_3-nogE2ac","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":50756,"triangles":1152,"vertices":2504,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.20996886555805894,0,-0.24505046045943532],"max":[0.20996886555805894,0.8999999761581421,0.21000851314408803]},"sizeMeters":[0.42,0.9,0.455],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:00.161Z","updatedAt":"2026-09-08T05:12:00.281Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29978/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FloorFixedInterviewChairPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29978/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29978/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29978/v1/model.glb\" alt=\"Floor-fixed interview chair (Police Station and Detective Office)\" 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/29978/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/29978/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29979","slug":"police-station-and-detective-office-interview-recordin-e09208a7","title":"Interview recording unit (Police Station and Detective Office)","summary":"A twin deck interview recording unit: a painted case, a transport keypad, a display, two glazed cassette windows and four spool hubs as named spin nodes, with two microphone sockets and a supply lead stub.","description":"A twin deck interview recording unit: a painted case, a transport keypad, a display, two glazed cassette windows and four spool hubs as named spin nodes, with two microphone sockets and a supply lead stub. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: reel-2, reel-1, reel-4, reel-3. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-interview-recordin-e09208a7","cdnUrl":"https://cdn.3dassets.dev/assets/29979/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-interview-recordin-e09208a7","thumbnailUrl":"https://cdn.3dassets.dev/assets/29979/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29979/v1/poster.webp","blurhash":"U9E3F@.800xuoL%MWVIU00M_~qD%D%9F%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":54864,"triangles":1896,"vertices":4058,"meshes":9,"materials":5,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.2199999988079071,-0.000012550512679190828,-0.2522360682487488],"max":[0.2199999988079071,0.20974999538064004,0.16700743832073625]},"sizeMeters":[0.44,0.21,0.419],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:00.407Z","updatedAt":"2026-09-08T05:12:00.505Z","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/29979/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 InterviewRecordingUnitPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29979/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/29979/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29979/v1/model.glb\" alt=\"Interview recording unit (Police Station and Detective Office)\" 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/29979/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/29979/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29980","slug":"police-station-and-detective-office-swing-arm-lamp-c61b6b30","title":"Swing arm lamp (Police Station and Detective Office)","summary":"A weighted swing arm lamp: a cast base, a column, a sprung parallel arm as a named node and a conical shade with its diffuser, reaching 700 mm out over a table.","description":"A weighted swing arm lamp: a cast base, a column, a sprung parallel arm as a named node and a conical shade with its diffuser, reaching 700 mm out over a table. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: lamp-arm. Rigid node-transform clips: tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-swing-arm-lamp-c61b6b30","cdnUrl":"https://cdn.3dassets.dev/assets/29980/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-swing-arm-lamp-c61b6b30","thumbnailUrl":"https://cdn.3dassets.dev/assets/29980/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29980/v1/poster.webp","blurhash":"U68|^k%M00%MD$-;%M4n009F_3%M-;9FM{~q","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":34688,"triangles":740,"vertices":1540,"meshes":6,"materials":4,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.10999999940395355,0.0000032057981286248705,-0.22137360274791718],"max":[0.10999999940395355,0.7104278614253619,0.6111723780632019]},"sizeMeters":[0.22,0.71,0.833],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:00.712Z","updatedAt":"2026-09-08T05:12:00.826Z","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/29980/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 SwingArmLampPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29980/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/29980/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29980/v1/model.glb\" alt=\"Swing arm lamp (Police Station and Detective Office)\" 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/29980/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/29980/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29981","slug":"police-station-and-detective-office-holding-bench-5ef7cfe9","title":"Holding cell bench (Police Station and Detective Office)","summary":"A 1.8 m holding cell bench at 450 mm: five timber slats on two painted steel bearers, floor anchors and two wall brackets with a back rail.","description":"A 1.8 m holding cell bench at 450 mm: five timber slats on two painted steel bearers, floor anchors and two wall brackets with a back rail. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-holding-bench-5ef7cfe9","cdnUrl":"https://cdn.3dassets.dev/assets/29981/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-holding-bench-5ef7cfe9","thumbnailUrl":"https://cdn.3dassets.dev/assets/29981/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29981/v1/poster.webp","blurhash":"U7BpLYxtNe_3=?~pX89F00v|ROD*5W00$$?b","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":49796,"triangles":1120,"vertices":2519,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.8999999761581421,0.000025171809853202776,-0.2549619236890803],"max":[0.8999999761581421,0.4500069214760935,0.22996193262977707]},"sizeMeters":[1.8,0.45,0.485],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:00.986Z","updatedAt":"2026-09-08T05:12:01.084Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29981/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HoldingCellBenchPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29981/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29981/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29981/v1/model.glb\" alt=\"Holding cell bench (Police Station and Detective Office)\" 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/29981/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/29981/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29983","slug":"police-station-and-detective-office-noir-office-door-w-911a2219","title":"Private office door wall module (Police Station and Detective Office)","summary":"A 1.2 m wall module for the private office: a timber rail-and-stile door with a reeded glass panel and a painted panel below it, moulded architraves proud of both faces, a bead framed pane and a chrome lever, all on one named hinge node.","description":"A 1.2 m wall module for the private office: a timber rail-and-stile door with a reeded glass panel and a painted panel below it, moulded architraves proud of both faces, a bead framed pane and a chrome lever, all on one named hinge node. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: noir-door. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-noir-office-door-w-911a2219","cdnUrl":"https://cdn.3dassets.dev/assets/29983/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-noir-office-door-w-911a2219","thumbnailUrl":"https://cdn.3dassets.dev/assets/29983/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29983/v1/poster.webp","blurhash":"U9CsdRR*00oJ_Nt78_IU9GWUxut7%Ns;MxM{","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":97336,"triangles":2240,"vertices":4933,"meshes":7,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6000662355233501,0,-0.07203222878936025],"max":[0.6000662355233501,2.700000047683716,0.07203222878936025]},"sizeMeters":[1.2,2.7,0.144],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:01.075Z","updatedAt":"2026-09-08T05:12:01.193Z","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/29983/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 PrivateOfficeDoorWallModulePoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29983/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/29983/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29983/v1/model.glb\" alt=\"Private office door wall module (Police Station and Detective Office)\" 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/29983/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/29983/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29982","slug":"police-station-and-detective-office-roll-top-desk-af13df6d","title":"Roll top desk (Police Station and Detective Office)","summary":"A 1.35 m timber roll top desk: two three drawer pedestals with named slide nodes, an inset writing surface, and a curved slatted hood over five pigeon holes and a letter rack. The hood is fixed: a tambour is a chain of slats, not a rigid node.","description":"A 1.35 m timber roll top desk: two three drawer pedestals with named slide nodes, an inset writing surface, and a curved slatted hood over five pigeon holes and a letter rack. The hood is fixed: a tambour is a chain of slats, not a rigid node. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: desk-drawer-l1, desk-drawer-l2, desk-drawer-l3, desk-drawer-r1, desk-drawer-r2, desk-drawer-r3. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-roll-top-desk-af13df6d","cdnUrl":"https://cdn.3dassets.dev/assets/29982/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-roll-top-desk-af13df6d","thumbnailUrl":"https://cdn.3dassets.dev/assets/29982/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29982/v1/poster.webp","blurhash":"U3C67A?H00r?^,?GIT5600M{peOAHq,.%iE,","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":130656,"triangles":4672,"vertices":10334,"meshes":15,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.699999988079071,-0.00002351543029988079,-0.3800469920324312],"max":[0.699999988079071,1.1800234629782125,0.39900174110483]},"sizeMeters":[1.4,1.18,0.779],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:01.007Z","updatedAt":"2026-09-08T05:12:01.111Z","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/29982/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 RollTopDeskPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29982/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/29982/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29982/v1/model.glb\" alt=\"Roll top desk (Police Station and Detective Office)\" 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/29982/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/29982/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29984","slug":"police-station-and-detective-office-bankers-lamp-fb4ee0bf","title":"Banker's lamp (Police Station and Detective Office)","summary":"A 320 mm banker's desk lamp: a weighted chrome base, a stem, a half-cylinder glass shade on two arms, a pull chain and a lead stub.","description":"A 320 mm banker's desk lamp: a weighted chrome base, a stem, a half-cylinder glass shade on two arms, a pull chain and a lead stub. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-bankers-lamp-fb4ee0bf","cdnUrl":"https://cdn.3dassets.dev/assets/29984/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-bankers-lamp-fb4ee0bf","thumbnailUrl":"https://cdn.3dassets.dev/assets/29984/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29984/v1/poster.webp","blurhash":"U16RP=~q000000D*_3?b4n-;-=4n00Mx_3%N","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":25576,"triangles":568,"vertices":1206,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.119995611855846,0,-0.20196959376335144],"max":[0.119995611855846,0.36000001430511475,0.0900081228150488]},"sizeMeters":[0.24,0.36,0.292],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:01.130Z","updatedAt":"2026-09-08T05:12:01.243Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29984/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BankerSLampPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29984/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29984/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29984/v1/model.glb\" alt=\"Banker's lamp (Police Station and Detective Office)\" 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/29984/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/29984/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29985","slug":"police-station-and-detective-office-filing-cabinet-tim-97c06f20","title":"Filing cabinet, dark timber (Police Station and Detective Office)","summary":"The four drawer filing cabinet in dark timber for the private office, with the same four named slide nodes and pull rails.","description":"The four drawer filing cabinet in dark timber for the private office, with the same four named slide nodes and pull rails. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: drawer-1, drawer-2, drawer-3, drawer-4. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-filing-cabinet-tim-97c06f20","cdnUrl":"https://cdn.3dassets.dev/assets/29985/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-filing-cabinet-tim-97c06f20","thumbnailUrl":"https://cdn.3dassets.dev/assets/29985/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29985/v1/poster.webp","blurhash":"U6A,8x^%000g~AR%9us;EmE3Z~%2-nWBIps;","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":38160,"triangles":2048,"vertices":4630,"meshes":11,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.23498643005979228,-0.000005496029453884443,-0.31000703350052855],"max":[0.23498643005979228,1.3200000524520874,0.3319925757717739]},"sizeMeters":[0.47,1.32,0.642],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:01.733Z","updatedAt":"2026-09-08T05:12:01.891Z","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/29985/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 FilingCabinetDarkTimberPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29985/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/29985/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29985/v1/model.glb\" alt=\"Filing cabinet, dark timber (Police Station and Detective Office)\" 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/29985/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/29985/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29986","slug":"police-station-and-detective-office-drinks-tray-4f5a2f9d","title":"Drinks tray (Police Station and Detective Office)","summary":"A 380 by 260 mm chrome drinks tray with a timber base and two handles, carrying a stoppered decanter and three tumblers.","description":"A 380 by 260 mm chrome drinks tray with a timber base and two handles, carrying a stoppered decanter and three tumblers. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-drinks-tray-4f5a2f9d","cdnUrl":"https://cdn.3dassets.dev/assets/29986/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-drinks-tray-4f5a2f9d","thumbnailUrl":"https://cdn.3dassets.dev/assets/29986/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29986/v1/poster.webp","blurhash":"U8BM}X?b004n4..8%M8_00D%?b-=~WD%M|?v","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":44664,"triangles":1072,"vertices":2213,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.19599999487400055,0.000007263100959997715,-0.1300046964504388],"max":[0.20600000023841858,0.2680003088643864,0.1300046964504388]},"sizeMeters":[0.402,0.268,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:01.873Z","updatedAt":"2026-09-08T05:12:01.989Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29986/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DrinksTrayPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29986/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29986/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29986/v1/model.glb\" alt=\"Drinks tray (Police Station and Detective Office)\" 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/29986/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/29986/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29987","slug":"police-station-and-detective-office-coat-stand-with-ha-9f0a6e43","title":"Coat stand with hat (Police Station and Detective Office)","summary":"A 1.82 m turned timber coat stand on a weighted base, with four upper pegs and four lower pegs, and a soft felt hat hung on one of them.","description":"A 1.82 m turned timber coat stand on a weighted base, with four upper pegs and four lower pegs, and a soft felt hat hung on one of them. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-coat-stand-with-ha-9f0a6e43","cdnUrl":"https://cdn.3dassets.dev/assets/29987/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-coat-stand-with-ha-9f0a6e43","thumbnailUrl":"https://cdn.3dassets.dev/assets/29987/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29987/v1/poster.webp","blurhash":"U067yA~T0001?dwbDgF|~XxD4mE*~mt60gIp","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":49008,"triangles":1124,"vertices":2510,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.13225471280363077,0,-0.13220007653078786],"max":[0.2271700894357363,1.8108591616907939,0.14643719792366028]},"sizeMeters":[0.359,1.811,0.279],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:02.020Z","updatedAt":"2026-09-08T05:12:02.176Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29987/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CoatStandWithHatPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29987/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29987/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29987/v1/model.glb\" alt=\"Coat stand with hat (Police Station and Detective Office)\" 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/29987/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/29987/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29988","slug":"police-station-and-detective-office-blind-window-wall-0e06a31c","title":"Sash window wall module with blind (Police Station and Detective Office)","summary":"A 1.2 m wall module carrying a timber two-over-two sash window with a projecting cill, and a venetian blind of twenty tilted slats on a head box with its lift cords and tilt wand.","description":"A 1.2 m wall module carrying a timber two-over-two sash window with a projecting cill, and a venetian blind of twenty tilted slats on a head box with its lift cords and tilt wand. Station grid: 1.2 m modules, walls 2.7 m tall on a 100 mm partition, ports on the module centrelines. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-blind-window-wall-0e06a31c","cdnUrl":"https://cdn.3dassets.dev/assets/29988/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-blind-window-wall-0e06a31c","thumbnailUrl":"https://cdn.3dassets.dev/assets/29988/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29988/v1/poster.webp","blurhash":"U6D]l0xu00Iot7xuWBD%E2bInhjE~q%M9F9E","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"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":104188,"triangles":2396,"vertices":5331,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999130328428387,0,-0.04993438608649959],"max":[0.5999130328428387,2.700000047683716,0.09002575395923211]},"sizeMeters":[1.2,2.7,0.14],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:02.349Z","updatedAt":"2026-09-08T05:12:02.465Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29988/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SashWindowWallModuleWithBlindPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29988/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29988/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29988/v1/model.glb\" alt=\"Sash window wall module with blind (Police Station and Detective Office)\" 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/29988/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/29988/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29989","slug":"police-station-and-detective-office-ceiling-fan-22104427","title":"Ceiling fan (Police Station and Detective Office)","summary":"A four blade ceiling fan on a 300 mm down rod: a canopy plate, a motor housing, a glass light bowl and the blade set as one named spin node. Hang it from a ceiling; the model itself is built from y=0 up.","description":"A four blade ceiling fan on a 300 mm down rod: a canopy plate, a motor housing, a glass light bowl and the blade set as one named spin node. Hang it from a ceiling; the model itself is built from y=0 up. Metre units, +Y up, the user side toward +Z, resting on y=0. Named pivoted nodes: fan-blades. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-ceiling-fan-22104427","cdnUrl":"https://cdn.3dassets.dev/assets/29989/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-ceiling-fan-22104427","thumbnailUrl":"https://cdn.3dassets.dev/assets/29989/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29989/v1/poster.webp","blurhash":"U55}T~xs00RQxvbHM{ae00M}~Wt6D$jY-;kV","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":41356,"triangles":956,"vertices":1967,"meshes":4,"materials":4,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.6069958209991455,0,-0.6069958209991455],"max":[0.6069958209991455,0.6400490999221802,0.6069958209991455]},"sizeMeters":[1.214,0.64,1.214],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:02.842Z","updatedAt":"2026-09-08T05:12:02.948Z","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/29989/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 CeilingFanPoliceStationAndDetectiveOffice(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/29989/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/29989/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29989/v1/model.glb\" alt=\"Ceiling fan (Police Station and Detective Office)\" 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/29989/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/29989/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"29992","slug":"police-station-and-detective-office-typewriter-59d312cc","title":"Typewriter (Police Station and Detective Office)","summary":"A desktop typewriter: a cast body, a rubber platen with two knobs and a sheet of paper rolled in, a bail bar, forty round keys on their stems and a type bar basket.","description":"A desktop typewriter: a cast body, a rubber platen with two knobs and a sheet of paper rolled in, a bail bar, forty round keys on their stems and a type bar basket. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-typewriter-59d312cc","cdnUrl":"https://cdn.3dassets.dev/assets/29992/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-typewriter-59d312cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/29992/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29992/v1/poster.webp","blurhash":"UND]o80000~qD%WB%Mt79FxvxuIVWCxuRjIU","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":177240,"triangles":4290,"vertices":9188,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.41999998688697815,0.000007174643534280101,-0.14999969146215078],"max":[0.1599999964237213,0.47209349274635315,0.14999969146215078]},"sizeMeters":[0.58,0.472,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":1,"publishedAt":"2026-09-08T05:12:03.312Z","updatedAt":"2026-09-08T13:03:46.944Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29992/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TypewriterPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29992/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29992/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29992/v1/model.glb\" alt=\"Typewriter (Police Station and Detective Office)\" 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/29992/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/29992/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29990","slug":"police-station-and-detective-office-rotary-telephone-8d20658e","title":"Rotary telephone (Police Station and Detective Office)","summary":"A rotary dial telephone: a moulded body, a chrome finger plate with ten holes, two cradle hooks and a handset with a coiled cord.","description":"A rotary dial telephone: a moulded body, a chrome finger plate with ten holes, two cradle hooks and a handset with a coiled cord. Metre units, +Y up, the user side toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-rotary-telephone-8d20658e","cdnUrl":"https://cdn.3dassets.dev/assets/29990/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-rotary-telephone-8d20658e","thumbnailUrl":"https://cdn.3dassets.dev/assets/29990/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29990/v1/poster.webp","blurhash":"U47BG,~q009F9FIUt7xu009F-=xb%g%Mxuax","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":44676,"triangles":1056,"vertices":2216,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.11000469925438738,0.000006483489914735352,-0.23274721205234528],"max":[0.11000469925438738,0.16699351221855085,0.13199999928474426]},"sizeMeters":[0.22,0.167,0.365],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:03.174Z","updatedAt":"2026-09-08T05:12:03.279Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29990/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RotaryTelephonePoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29990/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29990/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29990/v1/model.glb\" alt=\"Rotary telephone (Police Station and Detective Office)\" 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/29990/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/29990/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"29991","slug":"police-station-and-detective-office-stat-888d4012-starter-scene","title":"Station Floor (Police Station and Detective Office)","summary":"A police station floor built from the pack 1.2 m partition modules: a squad room of desks and lockers, the private detective office behind its own door with a roll top desk and a turning ceiling fan, an evidence store, an interview room behind a one way mirror, a barred cell,...","description":"A police station floor built from the pack 1.2 m partition modules: a squad room of desks and lockers, the private detective office behind its own door with a roll top desk and a turning ceiling fan, an evidence store, an interview room behind a one way mirror, a barred cell, and a public lobby across the front counter. The ceiling is left off so the rooms read from above.","status":"published","url":"https://3dassets.dev/assets/police-station-and-detective-office-stat-888d4012-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/29991/v1/model.glb","downloadUrl":"https://3dassets.dev/download/police-station-and-detective-office-stat-888d4012-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/29991/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/29991/v1/poster.webp","blurhash":"U5EV.{?b00M{_3%MM|IU00IU~qWB00IURjof","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":2782932,"triangles":70990,"vertices":155399,"meshes":245,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-7.353973485879252,-0.0000017705703253198535,-5.483973485879253],"max":[7.353973485879252,3.0500490999221803,5.510014373936751]},"sizeMeters":[14.708,3.05,10.994],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T05:12:03.218Z","updatedAt":"2026-09-08T05:12:03.332Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/29991/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationFloorPoliceStationAndDetectiveOffice(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/29991/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/29991/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/29991/v1/model.glb\" alt=\"Station Floor (Police Station and Detective Office)\" 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/29991/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/29991/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":null}}