{"data":{"id":323,"slug":"science-laboratory-and-cleanroom","title":"Science Laboratory and Cleanroom","summary":"A modern research laboratory and cleanroom suite: a modular bench system, fume cupboard and biosafety cabinet, autoclave, ovens, cold storage, centrifuge, microscopes and analysers, glassware by the rack, and the panels, hatches, air shower and gowning fittings of the suite.","description":"Everything a developer needs to build a working laboratory and the cleanroom next door. The bench system is the spine: a 1 m module with cupboards or a three drawer bank, a wash up sink with a bowl really let into the worktop, and a square corner unit whose ports are set so a run turns a right angle against two walls, all at a 0.9 m worktop line. Over and beside it go the reagent shelf, the service spine of gas taps and sockets, the solvent shelf on its spill tray, the vented chemical store, the sharps bin and the waste bins, the stool at two heights, the writing up desk and a mobile whiteboard. Containment is a 1.5 m fume cupboard whose glass sash rises behind the fixed light, shipped closed and open, and a class two biosafety cabinet on its stand. The instruments are the working half of the pack: a centrifuge whose lid lifts and whose rotor spins, an autoclave with a wheel handled door onto a real chamber, a drying oven, an incubator, a glass fronted fridge and an ultra low freezer, a liquid nitrogen dewar with a plug that lifts out, a water bath, a hot plate stirrer whose bar turns in the beaker, a vortex mixer, a pH meter on its electrode stand, an analytical balance in a draught shield that slides, a spectrophotometer, a gel tank and power pack, a fraction collector on a turning carousel, a rotary evaporator whose flask turns in the bath, a vacuum pump, a particle counter and a differential pressure gauge. The glassware is authored as sets, because one beaker is invisible and six on a tray is a photograph: beakers, conical and round bottomed flasks, measuring cylinders, a twelve tube rack, a twenty five vial rack, petri dish stacks, tip boxes and a carousel of pipettes. The suite itself is modular: 2 m floor tiles in two finishes, a 2 m painted laboratory wall bay in two liveries, a 1 m flush cleanroom panel with vision and hatch versions, an interlocked door pair with its own vestibule, ceiling filter and service panels, a gowning bench and locker bank, and a walk through air shower. What moves is rigid node transforms only: the fume sash, every cabinet, oven, incubator, fridge, freezer, autoclave, locker and airlock door, the hatch, the drawers, the centrifuge, bath, gel and sample lids, the balance shield, the dewar plug, the rotor, stirrer, vortex, carousel, evaporator flask and stool seats. What does not move is said in each description and it is always the same reason: tubing, hoses, leads and cabling are flexible and this library has no skinning; the pedal bin linkage, the safety shower pull rod and the microscope focus racks are linkages or movements of a millimetre; and liquids, flame and screen traces are fluids and shaders rather than geometry. There are no people. Every label, fascia, screen, whiteboard and sign is blank or carries plain abstract shapes, no maker, supplier or institute is named or depicted, and nothing here describes a substance or a procedure. All original CC0 geometry.","url":"https://3dassets.dev/packs/science-laboratory-and-cleanroom","coverUrl":"https://cdn.3dassets.dev/assets/37185/v1/poster.webp","assetCount":64,"aiGenerated":true,"aiGeneratedAssetCount":64,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":5634356,"totalTriangles":230792,"starterScene":{"id":"37185","slug":"science-laboratory-and-cleanroom-laborat-fe14c4c6-starter-scene","title":"Laboratory floor, open topped (Science Laboratory and Cleanroom)","summary":"A whole research laboratory and its cleanroom suite laid out on 2 m floor tiles and 2 m wall bays, deliberately left open topped so the camera and a walking player can see into every part of it. Along the back wall a seven module bench run turns a corner on its corner unit...","description":"A whole research laboratory and its cleanroom suite laid out on 2 m floor tiles and 2 m wall bays, deliberately left open topped so the camera and a walking player can see into every part of it. Along the back wall a seven module bench run turns a corner on its corner unit and returns down the left wall, carrying reagent shelves, a service spine of gas taps, the wash up sink, a balance in its draught shield, a pH meter, a hot plate stirrer, a vortex mixer and a bench of racks, beakers, flasks, cylinders and plates, with a spectrophotometer, a centrifuge and three microscopes on the return. A five module island runs down the middle with a rotary evaporator, a water bath, a gel tank and power pack, a fraction collector and an inverted microscope on it, and stools drawn up to both. Two fume cupboards, one with its sash raised, stand beside a biosafety cabinet at the back, with the minus eighty freezer, the laboratory fridge and the incubator against the cleanroom wall and the autoclave, drying oven and vacuum pump on a bench at the front. The left wall carries the whiteboard, the safety shower, the eyewash station, two chemical stores and the waste bins, with the writing up desk in the open. Behind a 1 m cleanroom panel run with two pass through hatches, two vision panels and an interlocked door pair sits the suite itself: gowning benches and lockers under three ceiling filter panels, a walk through air shower, a clean bench of plates, vials, tips and glassware, an instrument bench down the side wall and a particle counter on its stand.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-laborat-fe14c4c6-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/37185/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-laborat-fe14c4c6-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/37185/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37185/v1/poster.webp","blurhash":"U6EV?4of00Rk?b?bRj9F00xu~qRP9F8{V[-p","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":2198052,"triangles":97496,"vertices":106389,"meshes":433,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-10.016052125614184,-0.06003021365965735,-6.016052125614185],"max":[8.014065372391835,2.7599786383844713,6.000044265085389]},"sizeMeters":[18.03,2.82,12.016],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:57.633Z","updatedAt":"2026-09-12T04:44:57.728Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37185/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LaboratoryFloorOpenToppedScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37185/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37185/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37185/v1/model.glb\" alt=\"Laboratory floor, open topped (Science Laboratory and Cleanroom)\" 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/37185/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/37185/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"37123","slug":"science-laboratory-and-cleanroom-bench-run-module-433b0726","title":"Bench Run Module (Science Laboratory and Cleanroom)","summary":"A 1 m laboratory bench module: a plinth and white carcass under a grey chemical resistant worktop, with a pair of hinged under bench cupboard doors and a shelf inside.","description":"A 1 m laboratory bench module: a plinth and white carcass under a grey chemical resistant worktop, with a pair of hinged under bench cupboard doors and a shelf inside. Overall 1.00 by 0.90 by 0.77 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The worktop line is 0.9 m and the ports sit at 0.45 m on each end, so modules tile into a run of any length and the corner unit, the sink and the drawer module drop into any position in it. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-bench-run-module-433b0726","cdnUrl":"https://cdn.3dassets.dev/assets/37123/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-bench-run-module-433b0726","thumbnailUrl":"https://cdn.3dassets.dev/assets/37123/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37123/v1/poster.webp","blurhash":"UIIOkQs:00RP_Nt7M{WV00WVjYoz%Mj[D%Rj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":27712,"triangles":1308,"vertices":1157,"meshes":8,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5,0.00001815952129840398,-0.3749809259315775],"max":[0.5,0.9000201374478826,0.3919976487035579]},"sizeMeters":[1,0.9,0.767],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:26.975Z","updatedAt":"2026-09-12T04:44:27.083Z","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/37123/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 BenchRunModuleScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37123/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/37123/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37123/v1/model.glb\" alt=\"Bench Run Module (Science Laboratory and Cleanroom)\" 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/37123/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/37123/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37124","slug":"science-laboratory-and-cleanroom-bench-run-drawer-modu-b5e35464","title":"Bench Run Drawer Module (Science Laboratory and Cleanroom)","summary":"The same 1 m bench module with a three drawer bank instead of cupboard doors, for the tools, tubing and consumables that live under a working bench.","description":"The same 1 m bench module with a three drawer bank instead of cupboard doors, for the tools, tubing and consumables that live under a working bench. Overall 1.00 by 0.90 by 0.77 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-bench-run-drawer-modu-b5e35464","cdnUrl":"https://cdn.3dassets.dev/assets/37124/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-bench-run-drawer-modu-b5e35464","thumbnailUrl":"https://cdn.3dassets.dev/assets/37124/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37124/v1/poster.webp","blurhash":"UHI#$4xu00M_~qxuRjV@00azMxt7%LbID%Rj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":29860,"triangles":1416,"vertices":1251,"meshes":10,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5,0.00001815952129840398,-0.3749809259315775],"max":[0.5,0.9000201374478826,0.3899937658195646]},"sizeMeters":[1,0.9,0.765],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:27.093Z","updatedAt":"2026-09-12T04:44:27.219Z","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/37124/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 BenchRunDrawerModuleScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37124/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/37124/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37124/v1/model.glb\" alt=\"Bench Run Drawer Module (Science Laboratory and Cleanroom)\" 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/37124/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/37124/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37125","slug":"science-laboratory-and-cleanroom-bench-corner-module-c84ee91d","title":"Bench Corner Module (Science Laboratory and Cleanroom)","summary":"A 1 m square corner bench unit that turns a bench run through a right angle, with a single deep cupboard under a square worktop and ports set to the same worktop line as the straight modules.","description":"A 1 m square corner bench unit that turns a bench run through a right angle, with a single deep cupboard under a square worktop and ports set to the same worktop line as the straight modules. Overall 1.00 by 0.90 by 1.02 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The X ports sit 0.125 m forward of centre and the return port 0.125 m in from the left face, which is where a 0.75 m deep straight module lands when both are set against the same wall. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-bench-corner-module-c84ee91d","cdnUrl":"https://cdn.3dassets.dev/assets/37125/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-bench-corner-module-c84ee91d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37125/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37125/v1/poster.webp","blurhash":"UIHVC-WA00Rj~qRjM{s:00aykCt7xtofD%ax","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22840,"triangles":972,"vertices":839,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5,0.00001815952129840398,-0.5],"max":[0.5,0.9000201374478826,0.5169976636047191]},"sizeMeters":[1,0.9,1.017],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:26.757Z","updatedAt":"2026-09-12T04:44:26.846Z","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/37125/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 BenchCornerModuleScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37125/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/37125/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37125/v1/model.glb\" alt=\"Bench Corner Module (Science Laboratory and Cleanroom)\" 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/37125/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/37125/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37126","slug":"science-laboratory-and-cleanroom-wash-up-sink-unit-002a428c","title":"Wash Up Sink Unit (Science Laboratory and Cleanroom)","summary":"A 1 m bench module with a stainless wash up bowl let into the worktop, a mixer tap on a pillar, a ribbed drainer beside it and cupboards below.","description":"A 1 m bench module with a stainless wash up bowl let into the worktop, a mixer tap on a pillar, a ribbed drainer beside it and cupboards below. Overall 1.00 by 1.17 by 0.75 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. There is no water: a stream is a fluid and a shader, not geometry, and the tap and waste are modelled dry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-wash-up-sink-unit-002a428c","cdnUrl":"https://cdn.3dassets.dev/assets/37126/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-wash-up-sink-unit-002a428c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37126/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37126/v1/poster.webp","blurhash":"U7F=~?xt00IUIWxun#M{00WB~qoJ?aa#M{Ri","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":56056,"triangles":2400,"vertices":2373,"meshes":9,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5,0.000025639092468943137,-0.3749809259315775],"max":[0.5,1.1732292939041715,0.3749809259315775]},"sizeMeters":[1,1.173,0.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:29.189Z","updatedAt":"2026-09-12T04:44:29.289Z","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/37126/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 WashUpSinkUnitScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37126/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/37126/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37126/v1/model.glb\" alt=\"Wash Up Sink Unit (Science Laboratory and Cleanroom)\" 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/37126/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/37126/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37127","slug":"science-laboratory-and-cleanroom-reagent-shelf-over-be-4e0ff0cc","title":"Reagent Shelf Over Bench (Science Laboratory and Cleanroom)","summary":"A two tier reagent shelf that stands on a bench worktop, carrying six blank labelled bottles and a rail to stop them walking off the edge.","description":"A two tier reagent shelf that stands on a bench worktop, carrying six blank labelled bottles and a rail to stop them walking off the edge. Overall 1.00 by 0.87 by 0.28 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Every label is a blank white panel: no supplier, product or hazard text appears anywhere on this pack. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-reagent-shelf-over-be-4e0ff0cc","cdnUrl":"https://cdn.3dassets.dev/assets/37127/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-reagent-shelf-over-be-4e0ff0cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/37127/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37127/v1/poster.webp","blurhash":"UAEMLCo#00%Kx[?vD%9E00IU~pRk4.IU?a%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":43620,"triangles":1580,"vertices":1792,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.5012000203132629,0.000013746372653056227,-0.1399731437116611],"max":[0.5012000203132629,0.8679847878347942,0.1399731437116611]},"sizeMeters":[1.002,0.868,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:28.527Z","updatedAt":"2026-09-12T04:44:28.645Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37127/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ReagentShelfOverBenchScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37127/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37127/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37127/v1/model.glb\" alt=\"Reagent Shelf Over Bench (Science Laboratory and Cleanroom)\" 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/37127/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/37127/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37128","slug":"science-laboratory-and-cleanroom-fume-cupboard-b9f4a3f5","title":"Fume Cupboard (Science Laboratory and Cleanroom)","summary":"A 1.5 m walk up fume cupboard: a ducted chamber over a worktop, a rising glass sash on its counterweight rails, a lit interior, a service tap and a cupboard base.","description":"A 1.5 m walk up fume cupboard: a ducted chamber over a worktop, a rising glass sash on its counterweight rails, a lit interior, a service tap and a cupboard base. Overall 1.50 by 2.70 by 0.88 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The sash rises 0.55 m and stops behind the fixed upper light, which is where a real counterbalanced sash goes. The extract duct is a rigid stub off the canopy: ductwork beyond the collar belongs to the building, not the unit. Rigid node-transform clips: door-open, door-close, sash-open and sash-close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-fume-cupboard-b9f4a3f5","cdnUrl":"https://cdn.3dassets.dev/assets/37128/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-fume-cupboard-b9f4a3f5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37128/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37128/v1/poster.webp","blurhash":"U6FY+AD%00RjofxuRPIU00-;~qIURif7xuWU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":75552,"triangles":3160,"vertices":3113,"meshes":14,"materials":8,"textures":0,"animations":["door-open","door-close","sash-open","sash-close"],"boundingBox":{"min":[-0.7512000203132629,-1.7881393032936899e-9,-0.4300376381158327],"max":[0.7500659025830134,2.700000047683716,0.44825454609389054]},"sizeMeters":[1.501,2.7,0.878],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:28.625Z","updatedAt":"2026-09-12T04:44:28.747Z","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/37128/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 FumeCupboardScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37128/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/37128/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37128/v1/model.glb\" alt=\"Fume Cupboard (Science Laboratory and Cleanroom)\" 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/37128/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/37128/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37129","slug":"science-laboratory-and-cleanroom-fume-cupboard-sash-op-3e61f84f","title":"Fume Cupboard Sash Open (Science Laboratory and Cleanroom)","summary":"The fume cupboard with the sash raised to the full working aperture, for a scene that should read as work in progress rather than a closed cupboard.","description":"The fume cupboard with the sash raised to the full working aperture, for a scene that should read as work in progress rather than a closed cupboard. Overall 1.50 by 2.70 by 0.88 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The raised sash is baked into the geometry, so the sash node is present for assembly but carries no clip here. Use the plain fume cupboard when the sash should animate. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-fume-cupboard-sash-op-3e61f84f","cdnUrl":"https://cdn.3dassets.dev/assets/37129/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-fume-cupboard-sash-op-3e61f84f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37129/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37129/v1/poster.webp","blurhash":"U6FY+BD%00M{kCxuRjIU00-;~qIUV@jut8WB","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":74924,"triangles":3160,"vertices":3113,"meshes":14,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.7512000203132629,-1.7881393032936899e-9,-0.4300376381158327],"max":[0.7500659025830134,2.700000047683716,0.44825454609389054]},"sizeMeters":[1.501,2.7,0.878],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:28.717Z","updatedAt":"2026-09-12T04:44:28.811Z","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/37129/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 FumeCupboardSashOpenScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37129/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/37129/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37129/v1/model.glb\" alt=\"Fume Cupboard Sash Open (Science Laboratory and Cleanroom)\" 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/37129/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/37129/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37130","slug":"science-laboratory-and-cleanroom-biosafety-cabinet-86215fb0","title":"Biosafety Cabinet (Science Laboratory and Cleanroom)","summary":"A class two biosafety cabinet on a stand: a stainless work tray behind a fixed glass sash, a lit and grilled chamber, side lights and a control panel with blank displays.","description":"A class two biosafety cabinet on a stand: a stainless work tray behind a fixed glass sash, a lit and grilled chamber, side lights and a control panel with blank displays. Overall 1.30 by 1.97 by 0.83 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The sash is set at the working aperture and does not move: a real class two sash is interlocked to the airflow, and the pack animates only what one rigid node can honestly carry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-biosafety-cabinet-86215fb0","cdnUrl":"https://cdn.3dassets.dev/assets/37130/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-biosafety-cabinet-86215fb0","thumbnailUrl":"https://cdn.3dassets.dev/assets/37130/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37130/v1/poster.webp","blurhash":"URE:6+tR00ax~qt7D%RjD%oft7M{M{ofofWB","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":61260,"triangles":2472,"vertices":2563,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.651199996471405,-1.4305114426349519e-8,-0.40498253566461623],"max":[0.6499999761581421,1.9700053464243286,0.42698252064424574]},"sizeMeters":[1.301,1.97,0.832],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:30.357Z","updatedAt":"2026-09-12T04:44:30.455Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37130/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BiosafetyCabinetScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37130/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37130/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37130/v1/model.glb\" alt=\"Biosafety Cabinet (Science Laboratory and Cleanroom)\" 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/37130/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/37130/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37131","slug":"science-laboratory-and-cleanroom-eyewash-station-8165da82","title":"Eyewash Station (Science Laboratory and Cleanroom)","summary":"A pedestal eyewash station: a stainless bowl on a column with twin aerated heads, a green push paddle, a hand lever and a blank green sign plate above it.","description":"A pedestal eyewash station: a stainless bowl on a column with twin aerated heads, a green push paddle, a hand lever and a blank green sign plate above it. Overall 0.36 by 1.64 by 0.40 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The sign is a plain green plate with two white bars on it: an abstract mark, not any organisation. There is no water, since a stream is a fluid rather than geometry. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-eyewash-station-8165da82","cdnUrl":"https://cdn.3dassets.dev/assets/37131/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-eyewash-station-8165da82","thumbnailUrl":"https://cdn.3dassets.dev/assets/37131/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37131/v1/poster.webp","blurhash":"U55YWlkW00VY*HWqHZslSwn+rtS0Dinj-;Sz","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":28168,"triangles":944,"vertices":1179,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.18001098873615393,-0.000005493765650219085,-0.18001098873615393],"max":[0.18001098873615393,1.6399999856948853,0.21499486261478565]},"sizeMeters":[0.36,1.64,0.395],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:30.374Z","updatedAt":"2026-09-12T04:44:30.472Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37131/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EyewashStationScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37131/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37131/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37131/v1/model.glb\" alt=\"Eyewash Station (Science Laboratory and Cleanroom)\" 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/37131/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/37131/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37132","slug":"science-laboratory-and-cleanroom-safety-shower-224b608f","title":"Safety Shower (Science Laboratory and Cleanroom)","summary":"A combination safety shower and eyewash: a floor mounted post carrying an overhead rose on its arm, a triangular pull handle, a bowl with twin heads and a green sign.","description":"A combination safety shower and eyewash: a floor mounted post carrying an overhead rose on its arm, a triangular pull handle, a bowl with twin heads and a green sign. Overall 0.40 by 2.19 by 0.79 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. The pull rod, its triangular handle and the valve above it are a linkage, and a linkage is not reachable with one rigid node transform, so it is modelled in the rest position and left alone. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-safety-shower-224b608f","cdnUrl":"https://cdn.3dassets.dev/assets/37132/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-safety-shower-224b608f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37132/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37132/v1/poster.webp","blurhash":"U368dCW;00s9?]s;8_Iomnn%X,S##AbHO:nl","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":38476,"triangles":1348,"vertices":1672,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.20000000298023224,-7.631490127855967e-7,-0.20000000298023224],"max":[0.20000000298023224,2.190000057220459,0.58501338667676]},"sizeMeters":[0.4,2.19,0.785],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:30.361Z","updatedAt":"2026-09-12T04:44:30.488Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37132/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SafetyShowerScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37132/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37132/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37132/v1/model.glb\" alt=\"Safety Shower (Science Laboratory and Cleanroom)\" 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/37132/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/37132/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37133","slug":"science-laboratory-and-cleanroom-gas-tap-service-spine-1321c17c","title":"Gas Tap Service Spine (Science Laboratory and Cleanroom)","summary":"A 1 m bench top service spine: an upright panel carrying three gas taps with blue handwheels, a water tap and two socket plates, for the back edge of a bench run.","description":"A 1 m bench top service spine: an upright panel carrying three gas taps with blue handwheels, a water tap and two socket plates, for the back edge of a bench run. Overall 1.00 by 0.56 by 0.17 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The taps and sockets are modelled dry and dead. Nothing here carries gas, water or power, and the hoses a real spine feeds are flexible, which this library cannot rig. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-gas-tap-service-spine-1321c17c","cdnUrl":"https://cdn.3dassets.dev/assets/37133/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-gas-tap-service-spine-1321c17c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37133/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37133/v1/poster.webp","blurhash":"UDF$hY%M00%MD*~q%LIU00IU-;aexZNGNGWV","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":43072,"triangles":1688,"vertices":1779,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5,0.000007768082439685298,-0.08001953184606464],"max":[0.5,0.5650234992522966,0.09245231345720653]},"sizeMeters":[1,0.565,0.172],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:30.801Z","updatedAt":"2026-09-12T04:44:30.894Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37133/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GasTapServiceSpineScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37133/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37133/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37133/v1/model.glb\" alt=\"Gas Tap Service Spine (Science Laboratory and Cleanroom)\" 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/37133/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/37133/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37136","slug":"science-laboratory-and-cleanroom-chemical-store-cabine-6981415c","title":"Chemical Store Cabinet (Science Laboratory and Cleanroom)","summary":"A vented chemical storage cabinet: a yellow double door carcass on a plinth with louvred doors, spill shelves of blank labelled bottles inside and a duct stub off the top.","description":"A vented chemical storage cabinet: a yellow double door carcass on a plinth with louvred doors, spill shelves of blank labelled bottles inside and a duct stub off the top. Overall 0.90 by 2.09 by 0.66 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The bottles inside are plain amber and clear glass with blank white label panels. Nothing in this pack names or depicts a substance, a supplier or a hazard class. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-chemical-store-cabine-6981415c","cdnUrl":"https://cdn.3dassets.dev/assets/37136/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-chemical-store-cabine-6981415c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37136/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37136/v1/poster.webp","blurhash":"UDDcBCof01M|kEaxjXWY05V@~Rt8f5ayj]kB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58688,"triangles":2308,"vertices":2427,"meshes":14,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.449964920895664,-7.450581263057643e-10,-0.34001161207869857],"max":[0.449964920895664,2.0923080444335938,0.32299743452776675]},"sizeMeters":[0.9,2.092,0.663],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:32.208Z","updatedAt":"2026-09-12T04:44:32.333Z","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/37136/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 ChemicalStoreCabinetScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37136/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/37136/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37136/v1/model.glb\" alt=\"Chemical Store Cabinet (Science Laboratory and Cleanroom)\" 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/37136/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/37136/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37134","slug":"science-laboratory-and-cleanroom-chemical-store-cabine-fa38bcef","title":"Chemical Store Cabinet Open (Science Laboratory and Cleanroom)","summary":"The chemical store with both doors swung open on their shelves of bottles, for a scene that wants the contents of the cabinet to read from the camera.","description":"The chemical store with both doors swung open on their shelves of bottles, for a scene that wants the contents of the cabinet to read from the camera. Overall 1.01 by 2.09 by 1.06 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-chemical-store-cabine-fa38bcef","cdnUrl":"https://cdn.3dassets.dev/assets/37134/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-chemical-store-cabine-fa38bcef","thumbnailUrl":"https://cdn.3dassets.dev/assets/37134/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37134/v1/poster.webp","blurhash":"UAEL}@%L00IoxuoeM{Rm03M|~St7Rjazt6j=","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":60068,"triangles":2308,"vertices":2427,"meshes":14,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.507128410491389,-7.450581263057643e-10,-0.34001161207869857],"max":[0.507128410491389,2.0923080444335938,0.7172325979596101]},"sizeMeters":[1.014,2.092,1.057],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:32.046Z","updatedAt":"2026-09-12T04:44:32.237Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37134/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ChemicalStoreCabinetOpenScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37134/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37134/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37134/v1/model.glb\" alt=\"Chemical Store Cabinet Open (Science Laboratory and Cleanroom)\" 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/37134/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/37134/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37135","slug":"science-laboratory-and-cleanroom-solvent-bottle-shelf-21995a9a","title":"Solvent Bottle Shelf (Science Laboratory and Cleanroom)","summary":"A bench top solvent shelf: a bunded stainless spill tray of seven bottles with blank white labels, under a shelf of five more on brackets.","description":"A bench top solvent shelf: a bunded stainless spill tray of seven bottles with blank white labels, under a shelf of five more on brackets. Overall 0.94 by 0.77 by 0.34 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-solvent-bottle-shelf-21995a9a","cdnUrl":"https://cdn.3dassets.dev/assets/37135/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-solvent-bottle-shelf-21995a9a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37135/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37135/v1/poster.webp","blurhash":"U5EMI3WE00jF~q_3D%4n00-=?GIA00-;_44.","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":71664,"triangles":3024,"vertices":3277,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.4699999988079071,0.0000029592003994924343,-0.17002563804938764],"max":[0.4699999988079071,0.770014943794145,0.16999237345638507]},"sizeMeters":[0.94,0.77,0.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:32.198Z","updatedAt":"2026-09-12T04:44:32.318Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37135/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SolventBottleShelfScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37135/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37135/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37135/v1/model.glb\" alt=\"Solvent Bottle Shelf (Science Laboratory and Cleanroom)\" 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/37135/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/37135/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37137","slug":"science-laboratory-and-cleanroom-sharps-bin-e631076b","title":"Sharps Bin (Science Laboratory and Cleanroom)","summary":"A yellow sharps bin: a moulded body with a white lid, a slotted aperture, a carrying handle and an abstract trefoil mark pressed into the front.","description":"A yellow sharps bin: a moulded body with a white lid, a slotted aperture, a carrying handle and an abstract trefoil mark pressed into the front. Overall 0.32 by 0.43 by 0.30 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The trefoil on the front is four plain discs: a public safety mark drawn as abstract shapes, with no wording, no brand and no product. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-sharps-bin-e631076b","cdnUrl":"https://cdn.3dassets.dev/assets/37137/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-sharps-bin-e631076b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37137/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37137/v1/poster.webp","blurhash":"UNHxi,-o00RP%jayRNj]0nNGt1oyjBofR:jY","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":18204,"triangles":540,"vertices":760,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.1600005363032918,-1.7881393032936899e-9,-0.13999679750715782],"max":[0.1600005363032918,0.4300000071525574,0.1599943284209652]},"sizeMeters":[0.32,0.43,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:32.514Z","updatedAt":"2026-09-12T04:44:32.608Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37137/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SharpsBinScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37137/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37137/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37137/v1/model.glb\" alt=\"Sharps Bin (Science Laboratory and Cleanroom)\" 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/37137/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/37137/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37138","slug":"science-laboratory-and-cleanroom-waste-bin-set-b104e3e5","title":"Waste Bin Set (Science Laboratory and Cleanroom)","summary":"A set of three laboratory waste bins on one base line: a dark general bin, a blue recycling bin and a yellow clinical bin, each with a lid, a pedal and a foot plate.","description":"A set of three laboratory waste bins on one base line: a dark general bin, a blue recycling bin and a yellow clinical bin, each with a lid, a pedal and a foot plate. Overall 1.16 by 0.74 by 0.40 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. A pedal bin lid is driven by a push rod through a bell crank, which is a multi bar linkage and not reachable with one rigid node transform, so the lids are modelled closed. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-waste-bin-set-b104e3e5","cdnUrl":"https://cdn.3dassets.dev/assets/37138/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-waste-bin-set-b104e3e5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37138/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37138/v1/poster.webp","blurhash":"UBD,Jz0E4T~KEp?Zi^IX00~MtnEU-KIwxui]","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":38352,"triangles":1740,"vertices":1653,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5799999833106995,0.0000240429748165627,-0.17001555954769335],"max":[0.5799999833106995,0.7450000047683716,0.2250025122821723]},"sizeMeters":[1.16,0.745,0.395],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:34.853Z","updatedAt":"2026-09-12T04:44:34.964Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37138/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WasteBinSetScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37138/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37138/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37138/v1/model.glb\" alt=\"Waste Bin Set (Science Laboratory and Cleanroom)\" 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/37138/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/37138/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37139","slug":"science-laboratory-and-cleanroom-lab-stool-1bd99333","title":"Lab Stool (Science Laboratory and Cleanroom)","summary":"A laboratory stool: a five star castored base, a gas column, a chromed foot ring and a padded seat that turns on its column.","description":"A laboratory stool: a five star castored base, a gas column, a chromed foot ring and a padded seat that turns on its column. Overall 0.49 by 0.60 by 0.51 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-lab-stool-1bd99333","cdnUrl":"https://cdn.3dassets.dev/assets/37139/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-lab-stool-1bd99333","thumbnailUrl":"https://cdn.3dassets.dev/assets/37139/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37139/v1/poster.webp","blurhash":"UB8O0itR00M_%%j]MbaeD%jZxtfkZ}j@krWV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31500,"triangles":888,"vertices":1387,"meshes":4,"materials":3,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.22100000083446503,0.000005186140827395658,-0.252981036901474],"max":[0.2659857447091179,0.6000011447793985,0.252981036901474]},"sizeMeters":[0.487,0.6,0.506],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:34.006Z","updatedAt":"2026-09-12T04:44:34.103Z","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/37139/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 LabStoolScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37139/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/37139/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37139/v1/model.glb\" alt=\"Lab Stool (Science Laboratory and Cleanroom)\" 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/37139/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/37139/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37140","slug":"science-laboratory-and-cleanroom-lab-stool-tall-0155fa3b","title":"Lab Stool Tall (Science Laboratory and Cleanroom)","summary":"The laboratory stool at bench height, for a 0.9 m worktop rather than a writing desk.","description":"The laboratory stool at bench height, for a 0.9 m worktop rather than a writing desk. Overall 0.49 by 0.82 by 0.51 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-lab-stool-tall-0155fa3b","cdnUrl":"https://cdn.3dassets.dev/assets/37140/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-lab-stool-tall-0155fa3b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37140/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37140/v1/poster.webp","blurhash":"UA7xH}t800M{%%kCMbWAE3WBxVkBo0j[bbbF","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31544,"triangles":888,"vertices":1387,"meshes":4,"materials":3,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.2209802470904827,0.000005186140827395658,-0.252981036901474],"max":[0.2659857447091179,0.8200011429167534,0.252981036901474]},"sizeMeters":[0.487,0.82,0.506],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:34.044Z","updatedAt":"2026-09-12T04:44:34.139Z","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/37140/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 LabStoolTallScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37140/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/37140/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37140/v1/model.glb\" alt=\"Lab Stool Tall (Science Laboratory and Cleanroom)\" 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/37140/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/37140/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37141","slug":"science-laboratory-and-cleanroom-document-desk-with-mo-ad8f2374","title":"Document Desk With Monitor (Science Laboratory and Cleanroom)","summary":"A writing up desk: a wooden top on a steel frame with a two drawer pedestal, a monitor on a stem with a blank lit screen, a keyboard, a notebook and a pen pot.","description":"A writing up desk: a wooden top on a steel frame with a two drawer pedestal, a monitor on a stem with a blank lit screen, a keyboard, a notebook and a pen pot. Overall 1.30 by 1.32 by 0.70 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The screen is a blank lit panel. No interface, logo, text or trace is drawn on any display in this pack. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-document-desk-with-mo-ad8f2374","cdnUrl":"https://cdn.3dassets.dev/assets/37141/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-document-desk-with-mo-ad8f2374","thumbnailUrl":"https://cdn.3dassets.dev/assets/37141/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37141/v1/poster.webp","blurhash":"U9DSzR?b00E1-pIUD*-=00D$~W-;9b%N-:Di","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58732,"triangles":2508,"vertices":2489,"meshes":11,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6499999761581421,-0.000009158533074982156,-0.35004423899919357],"max":[0.6499999761581421,1.3199991275253316,0.35004423899919357]},"sizeMeters":[1.3,1.32,0.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:34.534Z","updatedAt":"2026-09-12T04:44:34.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/37141/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 DocumentDeskWithMonitorScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37141/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/37141/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37141/v1/model.glb\" alt=\"Document Desk With Monitor (Science Laboratory and Cleanroom)\" 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/37141/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/37141/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37143","slug":"science-laboratory-and-cleanroom-whiteboard-08a22546","title":"Whiteboard (Science Laboratory and Cleanroom)","summary":"A mobile whiteboard on a castored A frame: a white face with a steel surround, a pen tray and a handful of abstract marks on it, boxes, bars and a ring.","description":"A mobile whiteboard on a castored A frame: a white face with a steel surround, a pen tray and a handful of abstract marks on it, boxes, bars and a ring. Overall 1.62 by 1.83 by 0.50 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The marks are plain rectangles, bars and a ring. Nothing on this board is a formula, a procedure or any other readable instruction. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-whiteboard-08a22546","cdnUrl":"https://cdn.3dassets.dev/assets/37143/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-whiteboard-08a22546","thumbnailUrl":"https://cdn.3dassets.dev/assets/37143/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37143/v1/poster.webp","blurhash":"UFBWoOt700Rj_Nxv9EIA8{t7-;M{4Tof?vWA","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":44424,"triangles":1652,"vertices":1881,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.8100041421600943,-7.1525572131747595e-9,-0.25000748387490346],"max":[0.8100041421600943,1.8300000429153442,0.25000748387490346]},"sizeMeters":[1.62,1.83,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:36.148Z","updatedAt":"2026-09-12T04:44:36.243Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37143/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WhiteboardScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37143/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37143/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37143/v1/model.glb\" alt=\"Whiteboard (Science Laboratory and Cleanroom)\" 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/37143/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/37143/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37142","slug":"science-laboratory-and-cleanroom-centrifuge-e662e168","title":"Centrifuge (Science Laboratory and Cleanroom)","summary":"A bench top centrifuge: a cased body with a recessed bowl, a fixed angle rotor of six tube positions that spins, a hinged lid with a viewing window and a blank control panel.","description":"A bench top centrifuge: a cased body with a recessed bowl, a fixed angle rotor of six tube positions that spins, a hinged lid with a viewing window and a blank control panel. Overall 0.46 by 0.34 by 0.52 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The rotor turns inside the bowl and the lid lifts on its back hinge. The imbalance sensor, the latch solenoid and the drive belt are inside the case and are not modelled. Rigid node-transform clips: open, close and rotor-spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-centrifuge-e662e168","cdnUrl":"https://cdn.3dassets.dev/assets/37142/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-centrifuge-e662e168","thumbnailUrl":"https://cdn.3dassets.dev/assets/37142/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37142/v1/poster.webp","blurhash":"UAIOnY~q00Mx9FRjbbRj00M{j?M{M{x]?bxt","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41268,"triangles":1280,"vertices":1538,"meshes":10,"materials":7,"textures":0,"animations":["open","close","rotor-spin"],"boundingBox":{"min":[-0.23099783003929605,-0.000013730349032015088,-0.25],"max":[0.23099783003929605,0.3449897059903993,0.27121689915657043]},"sizeMeters":[0.462,0.345,0.521],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:37.075Z","updatedAt":"2026-09-12T04:44:37.171Z","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/37142/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 CentrifugeScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37142/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/37142/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37142/v1/model.glb\" alt=\"Centrifuge (Science Laboratory and Cleanroom)\" 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/37142/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/37142/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37144","slug":"science-laboratory-and-cleanroom-hot-plate-stirrer-557a5c1d","title":"Hot Plate Stirrer (Science Laboratory and Cleanroom)","summary":"A hot plate magnetic stirrer with a ceramic top plate, two control knobs, a blank display and a beaker of liquid on it whose stirrer bar turns.","description":"A hot plate magnetic stirrer with a ceramic top plate, two control knobs, a blank display and a beaker of liquid on it whose stirrer bar turns. Overall 0.26 by 0.24 by 0.32 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The bar turns in the beaker; the liquid itself is a static surface, because a moving fluid is a shader and a simulation rather than a rigid node transform. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-hot-plate-stirrer-557a5c1d","cdnUrl":"https://cdn.3dassets.dev/assets/37144/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-hot-plate-stirrer-557a5c1d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37144/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37144/v1/poster.webp","blurhash":"UDF$hWRk00oz00Mxn$%M00t7t8s:~qt8%Mae","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21380,"triangles":792,"vertices":772,"meshes":8,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.1300042777572323,-0.000005928108783408159,-0.15000000596046448],"max":[0.1300042777572323,0.24199999868869781,0.1731185980738456]},"sizeMeters":[0.26,0.242,0.323],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:37.444Z","updatedAt":"2026-09-12T04:44:37.540Z","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/37144/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 HotPlateStirrerScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37144/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/37144/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37144/v1/model.glb\" alt=\"Hot Plate Stirrer (Science Laboratory and Cleanroom)\" 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/37144/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/37144/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37145","slug":"science-laboratory-and-cleanroom-vortex-mixer-fad35bfe","title":"Vortex Mixer (Science Laboratory and Cleanroom)","summary":"A vortex mixer: a heavy cast base with a speed dial and a rubber cup head that turns on its eccentric drive.","description":"A vortex mixer: a heavy cast base with a speed dial and a rubber cup head that turns on its eccentric drive. Overall 0.17 by 0.23 by 0.22 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-vortex-mixer-fad35bfe","cdnUrl":"https://cdn.3dassets.dev/assets/37145/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-vortex-mixer-fad35bfe","thumbnailUrl":"https://cdn.3dassets.dev/assets/37145/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37145/v1/poster.webp","blurhash":"ULC6}toz4TM{_4WBMwof4nRj%Mt800az%Moe","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15052,"triangles":476,"vertices":512,"meshes":6,"materials":4,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.08499710200815529,-0.0000033579301620539903,-0.10000000149011612],"max":[0.08499710200815529,0.23400113008696732,0.12192306251562096]},"sizeMeters":[0.17,0.234,0.222],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:36.550Z","updatedAt":"2026-09-12T04:44:36.644Z","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/37145/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 VortexMixerScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37145/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/37145/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37145/v1/model.glb\" alt=\"Vortex Mixer (Science Laboratory and Cleanroom)\" 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/37145/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/37145/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37146","slug":"science-laboratory-and-cleanroom-water-bath-eb5ce99b","title":"Water Bath (Science Laboratory and Cleanroom)","summary":"A laboratory water bath: an insulated case with a filled well, a tube rack standing in it, a single lid on a back hinge and a control head with a blank display.","description":"A laboratory water bath: an insulated case with a filled well, a tube rack standing in it, a single lid on a back hinge and a control head with a blank display. Overall 0.58 by 0.29 by 0.38 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The water is a static surface. The lid lifts on its back hinge; the element, the thermostat and the circulation pump are inside the case. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-water-bath-eb5ce99b","cdnUrl":"https://cdn.3dassets.dev/assets/37146/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-water-bath-eb5ce99b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37146/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37146/v1/poster.webp","blurhash":"UEG[[|-;4nxu00%M?bRi009FM{of~qRjIUM{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":42640,"triangles":1828,"vertices":1537,"meshes":9,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.23000000417232513,-0.000003056591048961055,-0.17999877870468492],"max":[0.3499999940395355,0.29399685244350376,0.20121677987777517]},"sizeMeters":[0.58,0.294,0.381],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:37.785Z","updatedAt":"2026-09-12T04:44:37.963Z","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/37146/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 WaterBathScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37146/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/37146/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37146/v1/model.glb\" alt=\"Water Bath (Science Laboratory and Cleanroom)\" 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/37146/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/37146/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37147","slug":"science-laboratory-and-cleanroom-rotary-evaporator-355cf94d","title":"Rotary Evaporator (Science Laboratory and Cleanroom)","summary":"A rotary evaporator: a heating bath on a base, a drive head on a column, a round bottomed flask that turns on the drive axis and dips into the bath, and a tilted glass condenser with a receiving flask.","description":"A rotary evaporator: a heating bath on a base, a drive head on a column, a round bottomed flask that turns on the drive axis and dips into the bath, and a tilted glass condenser with a receiving flask. Overall 0.62 by 0.91 by 0.52 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The flask turns on its drive axis in the bath. The vacuum line, the bump trap seal and the lift column are static: tubing is flexible, and this library has no skinning. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-rotary-evaporator-355cf94d","cdnUrl":"https://cdn.3dassets.dev/assets/37147/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-rotary-evaporator-355cf94d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37147/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37147/v1/poster.webp","blurhash":"UAAAdj~q00004mD%xu%M00D%-;?b~q?bRP9F","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":57544,"triangles":2380,"vertices":2180,"meshes":9,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.3400000035762787,-0.0000032111942668278104,-0.28536029734016677],"max":[0.2800000011920929,0.9082227945327759,0.23931479454040527]},"sizeMeters":[0.62,0.908,0.525],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:38.217Z","updatedAt":"2026-09-12T04:44:38.480Z","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/37147/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 RotaryEvaporatorScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37147/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/37147/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37147/v1/model.glb\" alt=\"Rotary Evaporator (Science Laboratory and Cleanroom)\" 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/37147/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/37147/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37148","slug":"science-laboratory-and-cleanroom-fraction-collector-f35098e2","title":"Fraction Collector (Science Laboratory and Cleanroom)","summary":"A fraction collector: a carousel of twenty four tube positions that turns under a delivery arm, on a cased base with a blank display.","description":"A fraction collector: a carousel of twenty four tube positions that turns under a delivery arm, on a cased base with a blank display. Overall 0.42 by 0.41 by 0.44 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The carousel turns under a fixed arm. The delivery line into the arm is a rigid stub: real tubing is flexible and cannot be driven by a node transform. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-fraction-collector-f35098e2","cdnUrl":"https://cdn.3dassets.dev/assets/37148/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-fraction-collector-f35098e2","thumbnailUrl":"https://cdn.3dassets.dev/assets/37148/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37148/v1/poster.webp","blurhash":"UID]rHxu00t74mM{%Mxu00M{%Mof~qxuayWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":76692,"triangles":3664,"vertices":2956,"meshes":8,"materials":7,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.20999999344348907,0.000007522837098712654,-0.20999999344348907],"max":[0.20999999344348907,0.4133147895336151,0.22931446093058266]},"sizeMeters":[0.42,0.413,0.439],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:38.682Z","updatedAt":"2026-09-12T04:44:38.794Z","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/37148/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 FractionCollectorScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37148/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/37148/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37148/v1/model.glb\" alt=\"Fraction Collector (Science Laboratory and Cleanroom)\" 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/37148/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/37148/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37149","slug":"science-laboratory-and-cleanroom-autoclave-77a782f8","title":"Autoclave (Science Laboratory and Cleanroom)","summary":"A bench top autoclave: a cased body with a round chamber, a hinged steel door with a handwheel, a loaded tray inside and a blank control panel.","description":"A bench top autoclave: a cased body with a round chamber, a hinged steel door with a handwheel, a loaded tray inside and a blank control panel. Overall 0.68 by 0.78 by 0.82 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. There is no steam and no water. The door swings on its left hinge and the handwheel turns with it as one node: the radial locking segments behind the wheel are inside the ring and are not modelled. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-autoclave-77a782f8","cdnUrl":"https://cdn.3dassets.dev/assets/37149/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-autoclave-77a782f8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37149/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37149/v1/poster.webp","blurhash":"UDF$eO0000t7~qRjIUof00-;?bxu9FRjt7xu","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":49120,"triangles":1768,"vertices":1876,"meshes":9,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.35000001652166246,0.000009074425242616702,-0.3499999940395355],"max":[0.3310051814513396,0.7799897631525422,0.4709186061480137]},"sizeMeters":[0.681,0.78,0.821],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:39.058Z","updatedAt":"2026-09-12T04:44:39.184Z","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/37149/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 AutoclaveScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37149/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/37149/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37149/v1/model.glb\" alt=\"Autoclave (Science Laboratory and Cleanroom)\" 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/37149/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/37149/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37150","slug":"science-laboratory-and-cleanroom-drying-oven-bd1a8767","title":"Drying Oven (Science Laboratory and Cleanroom)","summary":"A bench top drying oven: an insulated case with a glazed hinged door, two wire shelves, a vent stub on top and a blank control fascia.","description":"A bench top drying oven: an insulated case with a glazed hinged door, two wire shelves, a vent stub on top and a blank control fascia. Overall 0.62 by 0.86 by 0.67 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The door swings on its left hinge. The element, the fan and the flap damper are behind the liner and are not modelled. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-drying-oven-bd1a8767","cdnUrl":"https://cdn.3dassets.dev/assets/37150/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-drying-oven-bd1a8767","thumbnailUrl":"https://cdn.3dassets.dev/assets/37150/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37150/v1/poster.webp","blurhash":"U9FPKc0000E100oM_2kB00%M-;.8~qWB9Fa{","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38140,"triangles":1344,"vertices":1376,"meshes":9,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.31119999289512634,-4.76837147544984e-9,-0.3022078676492173],"max":[0.3100177067285214,0.8600000143051147,0.36500488325983044]},"sizeMeters":[0.621,0.86,0.667],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:39.611Z","updatedAt":"2026-09-12T04:44:39.732Z","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/37150/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 DryingOvenScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37150/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/37150/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37150/v1/model.glb\" alt=\"Drying Oven (Science Laboratory and Cleanroom)\" 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/37150/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/37150/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37151","slug":"science-laboratory-and-cleanroom-incubator-10f9c4d0","title":"Incubator (Science Laboratory and Cleanroom)","summary":"A floor standing incubator: a tall case with a glazed outer door, three shelves of culture plates and flasks inside and a blank control head.","description":"A floor standing incubator: a tall case with a glazed outer door, three shelves of culture plates and flasks inside and a blank control head. Overall 0.72 by 1.18 by 0.75 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The outer door swings on its left hinge. The inner glass door, the gas line and the humidity tray of a real incubator are represented by the glazed panel and the liner alone. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-incubator-10f9c4d0","cdnUrl":"https://cdn.3dassets.dev/assets/37151/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-incubator-10f9c4d0","thumbnailUrl":"https://cdn.3dassets.dev/assets/37151/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37151/v1/poster.webp","blurhash":"UAEylHVs00D%g5aexsWW00bv~qx]%MRjD%x]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":59096,"triangles":2004,"vertices":2400,"meshes":10,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3610000014305115,1.3411045607369942e-9,-0.3400127804398793],"max":[0.3610000014305115,1.1799999475479126,0.4099993893066742]},"sizeMeters":[0.722,1.18,0.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:40.064Z","updatedAt":"2026-09-12T04:44:40.164Z","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/37151/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 IncubatorScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37151/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/37151/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37151/v1/model.glb\" alt=\"Incubator (Science Laboratory and Cleanroom)\" 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/37151/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/37151/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37152","slug":"science-laboratory-and-cleanroom-lab-fridge-d6969d5d","title":"Lab Fridge (Science Laboratory and Cleanroom)","summary":"A laboratory refrigerator: a glass fronted upright with four shelves of racks, vials and bottles inside, a blank temperature display and a full height handle.","description":"A laboratory refrigerator: a glass fronted upright with four shelves of racks, vials and bottles inside, a blank temperature display and a full height handle. Overall 0.60 by 1.54 by 0.69 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The door swings on its left hinge. The compressor, the fan and the door gasket are inside the case. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-lab-fridge-d6969d5d","cdnUrl":"https://cdn.3dassets.dev/assets/37152/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-lab-fridge-d6969d5d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37152/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37152/v1/poster.webp","blurhash":"UCEo_RM{00Rj%MWBWAf800t7~qkCt8j[M{j]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":80668,"triangles":3708,"vertices":3158,"meshes":11,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.30002473580700184,-7.450581263057643e-10,-0.31000351763142553],"max":[0.30002473580700184,1.5399999618530273,0.37500061554838626]},"sizeMeters":[0.6,1.54,0.685],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:41.373Z","updatedAt":"2026-09-12T04:44:41.485Z","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/37152/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 LabFridgeScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37152/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/37152/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37152/v1/model.glb\" alt=\"Lab Fridge (Science Laboratory and Cleanroom)\" 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/37152/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/37152/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37153","slug":"science-laboratory-and-cleanroom-minus-eighty-freezer-65812713","title":"Minus Eighty Freezer (Science Laboratory and Cleanroom)","summary":"An ultra low temperature upright freezer: a deep insulated case on castors with a heavy latched door, a blank alarm panel and a filter grille in the plinth.","description":"An ultra low temperature upright freezer: a deep insulated case on castors with a heavy latched door, a blank alarm panel and a filter grille in the plinth. Overall 0.84 by 1.76 by 1.10 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The door swings on its left hinge and its latch handle travels with it. The vacuum panel, the cascade compressors and the port heater are inside the case. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-minus-eighty-freezer-65812713","cdnUrl":"https://cdn.3dassets.dev/assets/37153/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-minus-eighty-freezer-65812713","thumbnailUrl":"https://cdn.3dassets.dev/assets/37153/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37153/v1/poster.webp","blurhash":"UBF6C7M_00IUxvRjs.t700xt~qogt7aeM{tR","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":68992,"triangles":2592,"vertices":2846,"meshes":9,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.4209917779312356,-2.980232727267662e-10,-0.4311999976634979],"max":[0.4209917779312356,1.7599999904632568,0.6744360393285751]},"sizeMeters":[0.842,1.76,1.106],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:40.830Z","updatedAt":"2026-09-12T04:44:40.946Z","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/37153/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 MinusEightyFreezerScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37153/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/37153/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37153/v1/model.glb\" alt=\"Minus Eighty Freezer (Science Laboratory and Cleanroom)\" 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/37153/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/37153/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37154","slug":"science-laboratory-and-cleanroom-liquid-nitrogen-dewar-a8f6a291","title":"Liquid Nitrogen Dewar (Science Laboratory and Cleanroom)","summary":"A liquid nitrogen dewar on a castored dolly: a polished vessel with a neck collar, a lift out plug with a handle, a level gauge and a frost band round the base.","description":"A liquid nitrogen dewar on a castored dolly: a polished vessel with a neck collar, a lift out plug with a handle, a level gauge and a frost band round the base. Overall 0.56 by 1.09 by 0.52 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The plug lifts straight out of the neck. There is no liquid and no vapour: a cryogen and its boil off are a fluid and a particle effect, neither of which is geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-liquid-nitrogen-dewar-a8f6a291","cdnUrl":"https://cdn.3dassets.dev/assets/37154/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-liquid-nitrogen-dewar-a8f6a291","thumbnailUrl":"https://cdn.3dassets.dev/assets/37154/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37154/v1/poster.webp","blurhash":"U38qQq-=004m~pRi00t700M{?b-;9Gt7^+Rj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37092,"triangles":1356,"vertices":1389,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.25999999046325684,0.000013279175687053169,-0.25998633235686613],"max":[0.29499998688697815,1.087792942809419,0.26100290739469345]},"sizeMeters":[0.555,1.088,0.521],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:41.259Z","updatedAt":"2026-09-12T04:44:41.355Z","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/37154/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 LiquidNitrogenDewarScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37154/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/37154/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37154/v1/model.glb\" alt=\"Liquid Nitrogen Dewar (Science Laboratory and Cleanroom)\" 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/37154/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/37154/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37155","slug":"science-laboratory-and-cleanroom-upright-microscope-29a91934","title":"Upright Microscope (Science Laboratory and Cleanroom)","summary":"An upright compound microscope: an illuminated foot, a mechanical stage with a slide on it, a three objective turret, a body tube and an angled binocular head.","description":"An upright compound microscope: an illuminated foot, a mechanical stage with a slide on it, a three objective turret, a body tube and an angled binocular head. Overall 0.20 by 0.47 by 0.33 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. The focus knobs, the stage verniers and the turret are modelled in place: each is a geared movement of a millimetre or two, which is below what a clip can usefully show. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-upright-microscope-29a91934","cdnUrl":"https://cdn.3dassets.dev/assets/37155/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-upright-microscope-29a91934","thumbnailUrl":"https://cdn.3dassets.dev/assets/37155/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37155/v1/poster.webp","blurhash":"U271sB-:00004TRh%g%N00a}~qxu_3RjITt6","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":39828,"triangles":1204,"vertices":1781,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.09998408112300797,-8.940696516468449e-10,-0.15999218910218566],"max":[0.09998408112300797,0.4743615984916687,0.16999219446660369]},"sizeMeters":[0.2,0.474,0.33],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:41.707Z","updatedAt":"2026-09-12T04:44:41.804Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37155/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function UprightMicroscopeScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37155/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37155/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37155/v1/model.glb\" alt=\"Upright Microscope (Science Laboratory and Cleanroom)\" 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/37155/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/37155/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37156","slug":"science-laboratory-and-cleanroom-inverted-microscope-e002ae9d","title":"Inverted Microscope (Science Laboratory and Cleanroom)","summary":"An inverted microscope: a heavy cased stand with the objectives under the stage, a plate sitting on the stage, a lamp arm reaching over it and eyepieces at the front.","description":"An inverted microscope: a heavy cased stand with the objectives under the stage, a plate sitting on the stage, a lamp arm reaching over it and eyepieces at the front. Overall 0.34 by 0.62 by 0.40 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static, for the same reason as the upright microscope: every movement on it is a geared millimetre. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-inverted-microscope-e002ae9d","cdnUrl":"https://cdn.3dassets.dev/assets/37156/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-inverted-microscope-e002ae9d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37156/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37156/v1/poster.webp","blurhash":"U77-f^x[00IU9YRjxuxu00M|?bxu~qt7D$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":41856,"triangles":1300,"vertices":1840,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.15000710351962382,-2.98023217215615e-10,-0.18000397465932785],"max":[0.19500709040660197,0.6200000047683716,0.2247263976167482]},"sizeMeters":[0.345,0.62,0.405],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:42.685Z","updatedAt":"2026-09-12T04:44:42.784Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37156/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function InvertedMicroscopeScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37156/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37156/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37156/v1/model.glb\" alt=\"Inverted Microscope (Science Laboratory and Cleanroom)\" 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/37156/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/37156/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37157","slug":"science-laboratory-and-cleanroom-stereo-microscope-54b34cc8","title":"Stereo Microscope (Science Laboratory and Cleanroom)","summary":"A stereo microscope on a boom stand: a heavy base plate, a post and boom, a head with two angled eyepieces, a ring light and a stage plate with a dish on it.","description":"A stereo microscope on a boom stand: a heavy base plate, a post and boom, a head with two angled eyepieces, a ring light and a stage plate with a dish on it. Overall 0.30 by 0.53 by 0.26 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. The focus rack and the zoom drum move by millimetres and are modelled in place. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-stereo-microscope-54b34cc8","cdnUrl":"https://cdn.3dassets.dev/assets/37157/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-stereo-microscope-54b34cc8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37157/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37157/v1/poster.webp","blurhash":"U47nUb%N009F00M{~qxuRjoft7WB?ct7D%RP","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":33044,"triangles":1016,"vertices":1341,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.1499863309913739,3.3527614018424856e-10,-0.12999086624662048],"max":[0.1499863309913739,0.5333263278007507,0.12999086624662048]},"sizeMeters":[0.3,0.533,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:42.883Z","updatedAt":"2026-09-12T04:44:43.070Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37157/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StereoMicroscopeScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37157/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37157/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37157/v1/model.glb\" alt=\"Stereo Microscope (Science Laboratory and Cleanroom)\" 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/37157/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/37157/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37158","slug":"science-laboratory-and-cleanroom-ph-meter-83d518b0","title":"Ph Meter (Science Laboratory and Cleanroom)","summary":"A bench pH meter: a sloped meter with a blank display and a keypad, an electrode on a stand arm dipping into a beaker, and two buffer beakers beside it.","description":"A bench pH meter: a sloped meter with a blank display and a keypad, an electrode on a stand arm dipping into a beaker, and two buffer beakers beside it. Overall 0.40 by 0.36 by 0.29 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. The electrode lead is flexible and is modelled only as the rigid stem into the clamp. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-ph-meter-83d518b0","cdnUrl":"https://cdn.3dassets.dev/assets/37158/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-ph-meter-83d518b0","thumbnailUrl":"https://cdn.3dassets.dev/assets/37158/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37158/v1/poster.webp","blurhash":"UBBWiAx[00Rk00M{?b%L00IU_3tR~q%ND%IT","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":36072,"triangles":1368,"vertices":1404,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.18000000715255737,-0.000001750415874940403,-0.10000000428408384],"max":[0.22120975156517297,0.36000001430511475,0.1920087884662653]},"sizeMeters":[0.401,0.36,0.292],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:44.122Z","updatedAt":"2026-09-12T04:44:44.291Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37158/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PhMeterScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37158/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37158/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37158/v1/model.glb\" alt=\"Ph Meter (Science Laboratory and Cleanroom)\" 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/37158/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/37158/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37159","slug":"science-laboratory-and-cleanroom-analytical-balance-1b7aa2fc","title":"Analytical Balance (Science Laboratory and Cleanroom)","summary":"An analytical balance in a glass draught shield: a stainless weighing pan, a blank display, a levelling foot and a side panel that slides open.","description":"An analytical balance in a glass draught shield: a stainless weighing pan, a blank display, a levelling foot and a side panel that slides open. Overall 0.24 by 0.28 by 0.36 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The right hand shield panel slides back. The levelling feet and the internal calibration weight are modelled or omitted as static, since both move by millimetres. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-analytical-balance-1b7aa2fc","cdnUrl":"https://cdn.3dassets.dev/assets/37159/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-analytical-balance-1b7aa2fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/37159/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37159/v1/poster.webp","blurhash":"U9HezoMx00M{kX00Di%M00xuRjxu~q.8of%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30380,"triangles":704,"vertices":1136,"meshes":9,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.12000183237280383,-0.0000027548991866563344,-0.17000000178813934],"max":[0.12099966240394955,0.2849985341044273,0.18741239545407382]},"sizeMeters":[0.241,0.285,0.357],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:43.383Z","updatedAt":"2026-09-12T04:44:43.493Z","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/37159/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 AnalyticalBalanceScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37159/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/37159/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37159/v1/model.glb\" alt=\"Analytical Balance (Science Laboratory and Cleanroom)\" 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/37159/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/37159/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37160","slug":"science-laboratory-and-cleanroom-spectrophotometer-6e01aa49","title":"Spectrophotometer (Science Laboratory and Cleanroom)","summary":"A bench spectrophotometer: a cased instrument with a sloped blank display, a keypad and a sample compartment whose lid lifts on a back hinge.","description":"A bench spectrophotometer: a cased instrument with a sloped blank display, a keypad and a sample compartment whose lid lifts on a back hinge. Overall 0.51 by 0.31 by 0.40 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-spectrophotometer-6e01aa49","cdnUrl":"https://cdn.3dassets.dev/assets/37160/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-spectrophotometer-6e01aa49","thumbnailUrl":"https://cdn.3dassets.dev/assets/37160/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37160/v1/poster.webp","blurhash":"U7HetX~q009F00t8%MV[009FM{%L_3of?bIU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":28036,"triangles":900,"vertices":985,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.25,-0.000013051856765422531,-0.2000106814783166],"max":[0.2599960261592833,0.3099989315708826,0.2000106814783166]},"sizeMeters":[0.51,0.31,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:44.447Z","updatedAt":"2026-09-12T04:44:44.547Z","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/37160/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 SpectrophotometerScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37160/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/37160/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37160/v1/model.glb\" alt=\"Spectrophotometer (Science Laboratory and Cleanroom)\" 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/37160/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/37160/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37161","slug":"science-laboratory-and-cleanroom-gel-tank-and-power-pa-fd0c4baf","title":"Gel Tank And Power Pack (Science Laboratory and Cleanroom)","summary":"A horizontal gel tank with a cast gel, a comb and electrode posts under a lid that lifts, beside a power pack with a blank display and two rigid lead stubs.","description":"A horizontal gel tank with a cast gel, a comb and electrode posts under a lid that lifts, beside a power pack with a blank display and two rigid lead stubs. Overall 0.62 by 0.19 by 0.26 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The leads are rigid stubs at each terminal. A real lead is flexible, and this library has no skinning, so the run between the pack and the tank is left off rather than modelled as a bent rod. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-gel-tank-and-power-pa-fd0c4baf","cdnUrl":"https://cdn.3dassets.dev/assets/37161/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-gel-tank-and-power-pa-fd0c4baf","thumbnailUrl":"https://cdn.3dassets.dev/assets/37161/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37161/v1/poster.webp","blurhash":"U6D,DwpI00^+IT~qkCM_00Vr_N9u?c00t6o#","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38324,"triangles":936,"vertices":1663,"meshes":11,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.1599999964237213,-0.000006407024201557365,-0.1299990839231956],"max":[0.46045923233032227,0.19381723291857106,0.1299990791548239]},"sizeMeters":[0.62,0.194,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:45.832Z","updatedAt":"2026-09-12T04:44:45.926Z","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/37161/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 GelTankAndPowerPackScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37161/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/37161/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37161/v1/model.glb\" alt=\"Gel Tank And Power Pack (Science Laboratory and Cleanroom)\" 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/37161/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/37161/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37162","slug":"science-laboratory-and-cleanroom-vacuum-pump-9ceec1e2","title":"Vacuum Pump (Science Laboratory and Cleanroom)","summary":"A rotary vane vacuum pump: a motor on a cast body with a sight glass, a carrying handle, an inlet stub and rubber feet.","description":"A rotary vane vacuum pump: a motor on a cast body with a sight glass, a carrying handle, an inlet stub and rubber feet. Overall 0.54 by 0.31 by 0.24 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. The motor fan is inside its cowl and the vacuum hose is flexible, so neither is rigged. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-vacuum-pump-9ceec1e2","cdnUrl":"https://cdn.3dassets.dev/assets/37162/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-vacuum-pump-9ceec1e2","thumbnailUrl":"https://cdn.3dassets.dev/assets/37162/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37162/v1/poster.webp","blurhash":"U7B4E@0.00~VEk?w%gMx00^h?bD*+r8wIAtR","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":37136,"triangles":1288,"vertices":1556,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.3199999928474426,-0.000015166918198999957,-0.12001281402700205],"max":[0.21999999973922968,0.3129103498106859,0.12002142265127067]},"sizeMeters":[0.54,0.313,0.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:45.066Z","updatedAt":"2026-09-12T04:44:45.161Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37162/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function VacuumPumpScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37162/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37162/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37162/v1/model.glb\" alt=\"Vacuum Pump (Science Laboratory and Cleanroom)\" 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/37162/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/37162/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37163","slug":"science-laboratory-and-cleanroom-particle-counter-c05aad35","title":"Particle Counter (Science Laboratory and Cleanroom)","summary":"A portable airborne particle counter on a tripod stand: a cased instrument with a blank lit screen, a keypad and an isokinetic sampling probe on top.","description":"A portable airborne particle counter on a tripod stand: a cased instrument with a blank lit screen, a keypad and an isokinetic sampling probe on top. Overall 0.37 by 1.24 by 0.42 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static. The pump and the optical bench are inside the case, and the sample line of a remote head is flexible. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-particle-counter-c05aad35","cdnUrl":"https://cdn.3dassets.dev/assets/37163/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-particle-counter-c05aad35","thumbnailUrl":"https://cdn.3dassets.dev/assets/37163/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37163/v1/poster.webp","blurhash":"U66kbTxv00D%~qof4nM{V@jZogbb4na#?boc","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":26464,"triangles":720,"vertices":1154,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.12997290467932718,0,-0.2105513282915378],"max":[0.23997290408328073,1.239614486694336,0.2105513282915378]},"sizeMeters":[0.37,1.24,0.421],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:45.854Z","updatedAt":"2026-09-12T04:44:45.960Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37163/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ParticleCounterScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37163/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37163/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37163/v1/model.glb\" alt=\"Particle Counter (Science Laboratory and Cleanroom)\" 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/37163/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/37163/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37164","slug":"science-laboratory-and-cleanroom-differential-pressure-1109411b","title":"Differential Pressure Gauge (Science Laboratory and Cleanroom)","summary":"A wall mounted differential pressure gauge: a dial in a steel bezel with a needle and plain tick marks, on a backplate with two rigid tube stubs.","description":"A wall mounted differential pressure gauge: a dial in a steel bezel with a needle and plain tick marks, on a backplate with two rigid tube stubs. Overall 0.16 by 0.16 by 0.09 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static, and placed on a wall: the model rests on y=0 so it is positioned by its mounting height. The needle is modelled at one reading. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-differential-pressure-1109411b","cdnUrl":"https://cdn.3dassets.dev/assets/37164/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-differential-pressure-1109411b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37164/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37164/v1/poster.webp","blurhash":"U8EfWq%g00ae~q_3IU4n00t7_3M{Ioxtt79G","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":24768,"triangles":652,"vertices":1064,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.07999999821186066,8.940696516468449e-10,-0.0499972096966455],"max":[0.07999999821186066,0.15999999731779097,0.04399721243845916]},"sizeMeters":[0.16,0.16,0.094],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:47.134Z","updatedAt":"2026-09-12T04:44:47.239Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37164/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DifferentialPressureGaugeScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37164/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37164/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37164/v1/model.glb\" alt=\"Differential Pressure Gauge (Science Laboratory and Cleanroom)\" 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/37164/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/37164/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37165","slug":"science-laboratory-and-cleanroom-beaker-set-8c5c578a","title":"Beaker Set (Science Laboratory and Cleanroom)","summary":"A set of four graduated beakers of increasing size on a tray, three of them part filled, with plain graduation bars and a spout on each lip.","description":"A set of four graduated beakers of increasing size on a tray, three of them part filled, with plain graduation bars and a spout on each lip. Overall 0.35 by 0.14 by 0.22 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-beaker-set-8c5c578a","cdnUrl":"https://cdn.3dassets.dev/assets/37165/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-beaker-set-8c5c578a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37165/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37165/v1/poster.webp","blurhash":"UBDJYNxu00%M00of%MWB00IU?vNG~qofoeWV","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":28956,"triangles":1192,"vertices":1130,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.17000000178813934,-0.0000052491307640477325,-0.10999908560173743],"max":[0.17899999022483826,0.14398899960666467,0.10999908560173743]},"sizeMeters":[0.349,0.144,0.22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:46.732Z","updatedAt":"2026-09-12T04:44:46.912Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37165/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BeakerSetScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37165/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37165/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37165/v1/model.glb\" alt=\"Beaker Set (Science Laboratory and Cleanroom)\" 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/37165/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/37165/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37167","slug":"science-laboratory-and-cleanroom-flask-set-7c05f12b","title":"Flask Set (Science Laboratory and Cleanroom)","summary":"A set of glass flasks: three conical flasks of different sizes, two of them part filled, and a round bottomed flask standing in a cork ring.","description":"A set of glass flasks: three conical flasks of different sizes, two of them part filled, and a round bottomed flask standing in a cork ring. Overall 0.37 by 0.20 by 0.24 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-flask-set-7c05f12b","cdnUrl":"https://cdn.3dassets.dev/assets/37167/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-flask-set-7c05f12b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37167/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37167/v1/poster.webp","blurhash":"UEE3I~x]00Ri00t7xvM|00IU?bog~qRkxbxu","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":27396,"triangles":1448,"vertices":936,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.18000000715255737,8.544543484683559e-7,-0.12000732921093687],"max":[0.19200000166893005,0.2039959882866086,0.12000732921093687]},"sizeMeters":[0.372,0.204,0.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:47.683Z","updatedAt":"2026-09-12T04:44:47.781Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37167/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FlaskSetScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37167/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37167/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37167/v1/model.glb\" alt=\"Flask Set (Science Laboratory and Cleanroom)\" 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/37167/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/37167/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37166","slug":"science-laboratory-and-cleanroom-measuring-cylinder-se-9e731d1f","title":"Measuring Cylinder Set (Science Laboratory and Cleanroom)","summary":"Three graduated measuring cylinders of different capacities on heavy hexagonal feet, two of them part filled, with plain graduation bars up the wall.","description":"Three graduated measuring cylinders of different capacities on heavy hexagonal feet, two of them part filled, with plain graduation bars up the wall. Overall 0.26 by 0.30 by 0.16 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-measuring-cylinder-se-9e731d1f","cdnUrl":"https://cdn.3dassets.dev/assets/37166/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-measuring-cylinder-se-9e731d1f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37166/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37166/v1/poster.webp","blurhash":"U8Css:xv00Vs00WB?bt700IU~q-;oyxu-;IU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":25124,"triangles":912,"vertices":989,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.12999999523162842,8.54759948014025e-7,-0.08000671113745594],"max":[0.13459634466858372,0.2980000078678131,0.08000671113745594]},"sizeMeters":[0.265,0.298,0.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:47.608Z","updatedAt":"2026-09-12T04:44:47.720Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37166/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MeasuringCylinderSetScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37166/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37166/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37166/v1/model.glb\" alt=\"Measuring Cylinder Set (Science Laboratory and Cleanroom)\" 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/37166/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/37166/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37168","slug":"science-laboratory-and-cleanroom-test-tube-rack-cd8ff659","title":"Test Tube Rack (Science Laboratory and Cleanroom)","summary":"A rack of twelve test tubes: a moulded base and a drilled top rail on posts, with the tubes part filled in three colours.","description":"A rack of twelve test tubes: a moulded base and a drilled top rail on posts, with the tubes part filled in three colours. Overall 0.26 by 0.13 by 0.10 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-test-tube-rack-cd8ff659","cdnUrl":"https://cdn.3dassets.dev/assets/37168/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-test-tube-rack-cd8ff659","thumbnailUrl":"https://cdn.3dassets.dev/assets/37168/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37168/v1/poster.webp","blurhash":"UEIhsu-;00%g?b~qozD%00t8RjITM{WBs:D%","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54952,"triangles":3360,"vertices":2279,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.12999999523162842,0.0000014518135998606296,-0.04999328409417248],"max":[0.12999999523162842,0.1289987632373576,0.04999328409417248]},"sizeMeters":[0.26,0.129,0.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:48.663Z","updatedAt":"2026-09-12T04:44:48.759Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37168/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TestTubeRackScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37168/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37168/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37168/v1/model.glb\" alt=\"Test Tube Rack (Science Laboratory and Cleanroom)\" 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/37168/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/37168/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37169","slug":"science-laboratory-and-cleanroom-sample-vial-rack-db78b7ce","title":"Sample Vial Rack (Science Laboratory and Cleanroom)","summary":"A cryogenic sample rack: a moulded box holding twenty five capped vials in a five by five grid, with a lift handle at each end.","description":"A cryogenic sample rack: a moulded box holding twenty five capped vials in a five by five grid, with a lift handle at each end. Overall 0.17 by 0.08 by 0.17 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-sample-vial-rack-db78b7ce","cdnUrl":"https://cdn.3dassets.dev/assets/37169/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-sample-vial-rack-db78b7ce","thumbnailUrl":"https://cdn.3dassets.dev/assets/37169/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37169/v1/poster.webp","blurhash":"U6GlYM_N00VtSxIor@%200Dj55In^l-;E0D%","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":99920,"triangles":4620,"vertices":4484,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.0860000029206276,-0.000004182150061905754,-0.0860000029206276],"max":[0.0860000029206276,0.08275234395491504,0.0860000029206276]},"sizeMeters":[0.172,0.083,0.172],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:50.066Z","updatedAt":"2026-09-12T04:44:50.160Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37169/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SampleVialRackScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37169/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37169/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37169/v1/model.glb\" alt=\"Sample Vial Rack (Science Laboratory and Cleanroom)\" 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/37169/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/37169/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37170","slug":"science-laboratory-and-cleanroom-petri-dish-stack-827cabc3","title":"Petri Dish Stack (Science Laboratory and Cleanroom)","summary":"Petri dishes: two stacks of four poured plates and one open dish beside them with its lid turned over, all on a plain tray.","description":"Petri dishes: two stacks of four poured plates and one open dish beside them with its lid turned over, all on a plain tray. Overall 0.30 by 0.10 by 0.21 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-petri-dish-stack-827cabc3","cdnUrl":"https://cdn.3dassets.dev/assets/37170/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-petri-dish-stack-827cabc3","thumbnailUrl":"https://cdn.3dassets.dev/assets/37170/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37170/v1/poster.webp","blurhash":"UADJFq?b01NG4.%M%MIV00D%?FoL~q9aNH$}","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":84568,"triangles":2052,"vertices":4333,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.15000000596046448,0.00000817889691375525,-0.10727182573060144],"max":[0.15000000596046448,0.09500114294829164,0.10000610767578073]},"sizeMeters":[0.3,0.095,0.207],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:50.363Z","updatedAt":"2026-09-12T04:44:50.554Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37170/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PetriDishStackScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37170/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37170/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37170/v1/model.glb\" alt=\"Petri Dish Stack (Science Laboratory and Cleanroom)\" 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/37170/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/37170/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37171","slug":"science-laboratory-and-cleanroom-tip-box-stack-917c3d53","title":"Tip Box Stack (Science Laboratory and Cleanroom)","summary":"A stack of three pipette tip boxes: two closed with their lids down and an open box on top showing a full grid of tips in its rack.","description":"A stack of three pipette tip boxes: two closed with their lids down and an open box on top showing a full grid of tips in its rack. Overall 0.28 by 0.24 by 0.12 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-tip-box-stack-917c3d53","cdnUrl":"https://cdn.3dassets.dev/assets/37171/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-tip-box-stack-917c3d53","thumbnailUrl":"https://cdn.3dassets.dev/assets/37171/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37171/v1/poster.webp","blurhash":"UFDJu6.T00DNt7_3j[00##MwIvb^x[ogRjM{","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":67624,"triangles":1908,"vertices":3382,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.06599999964237213,-0.000008404858167276874,-0.04600560033666226],"max":[0.210999995470047,0.23600840667610895,0.07600559780346486]},"sizeMeters":[0.277,0.236,0.122],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:49.527Z","updatedAt":"2026-09-12T04:44:49.624Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37171/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TipBoxStackScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37171/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37171/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37171/v1/model.glb\" alt=\"Tip Box Stack (Science Laboratory and Cleanroom)\" 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/37171/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/37171/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37172","slug":"science-laboratory-and-cleanroom-pipette-stand-8590a9c1","title":"Pipette Stand (Science Laboratory and Cleanroom)","summary":"A carousel pipette stand: a weighted base, a column and a hooked crown carrying four air displacement pipettes with coloured plungers.","description":"A carousel pipette stand: a weighted base, a column and a hooked crown carrying four air displacement pipettes with coloured plungers. Overall 0.18 by 0.37 by 0.18 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-pipette-stand-8590a9c1","cdnUrl":"https://cdn.3dassets.dev/assets/37172/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-pipette-stand-8590a9c1","thumbnailUrl":"https://cdn.3dassets.dev/assets/37172/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37172/v1/poster.webp","blurhash":"U797t#o}00ix_NW.9FxH4nRj?HtQ00aK?vbu","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":34848,"triangles":848,"vertices":1851,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.08999307539627703,0,-0.08999307539627703],"max":[0.08999307539627703,0.37400001287460327,0.08999307539627703]},"sizeMeters":[0.18,0.374,0.18],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:50.380Z","updatedAt":"2026-09-12T04:44:50.571Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37172/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PipetteStandScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37172/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37172/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37172/v1/model.glb\" alt=\"Pipette Stand (Science Laboratory and Cleanroom)\" 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/37172/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/37172/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37173","slug":"science-laboratory-and-cleanroom-cleanroom-floor-tile-28a5dc1a","title":"Cleanroom Floor Tile (Science Laboratory and Cleanroom)","summary":"A 2 m cleanroom floor tile in pale welded vinyl, with a seam bead along two edges and a coved upstand line, laid flush with its neighbours.","description":"A 2 m cleanroom floor tile in pale welded vinyl, with a seam bead along two edges and a coved upstand line, laid flush with its neighbours. Overall 2.00 by 0.06 by 2.00 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The top of the tile is at y=0.06, so a tile is placed at y=-0.06 to put the floor surface at zero and everything else in the pack simply rests on it. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-cleanroom-floor-tile-28a5dc1a","cdnUrl":"https://cdn.3dassets.dev/assets/37173/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-cleanroom-floor-tile-28a5dc1a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37173/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37173/v1/poster.webp","blurhash":"UBEo_Q%M00ae%MfQRjof00M{~qWB9Fj@ofWB","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5064,"triangles":132,"vertices":148,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000030213659657350733,-1],"max":[1,0.061976591126040176,1]},"sizeMeters":[2,0.062,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:51.117Z","updatedAt":"2026-09-12T04:44:51.224Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37173/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CleanroomFloorTileScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37173/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37173/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37173/v1/model.glb\" alt=\"Cleanroom Floor Tile (Science Laboratory and Cleanroom)\" 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/37173/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/37173/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37174","slug":"science-laboratory-and-cleanroom-lab-floor-tile-c9bb152a","title":"Lab Floor Tile (Science Laboratory and Cleanroom)","summary":"A 2 m laboratory floor tile in grey safety vinyl, with a seam bead along two edges, sharing the cleanroom tile ports so the two surfaces meet in one field.","description":"A 2 m laboratory floor tile in grey safety vinyl, with a seam bead along two edges, sharing the cleanroom tile ports so the two surfaces meet in one field. Overall 2.00 by 0.06 by 2.00 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-lab-floor-tile-c9bb152a","cdnUrl":"https://cdn.3dassets.dev/assets/37174/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-lab-floor-tile-c9bb152a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37174/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37174/v1/poster.webp","blurhash":"U8D0Jy-;00WB-;a{Rjof00IU~qWB4noMt7Rj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":5028,"triangles":132,"vertices":148,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-0.000030213659657350733,-1],"max":[1,0.061976591126040176,1]},"sizeMeters":[2,0.062,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:51.762Z","updatedAt":"2026-09-12T04:44:51.857Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37174/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LabFloorTileScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37174/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37174/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37174/v1/model.glb\" alt=\"Lab Floor Tile (Science Laboratory and Cleanroom)\" 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/37174/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/37174/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37176","slug":"science-laboratory-and-cleanroom-lab-wall-module-d46ccd96","title":"Lab Wall Module (Science Laboratory and Cleanroom)","summary":"A 2 m painted laboratory wall bay, 2.7 m high, with a coved skirting and a dado band on both faces and ports at each end so a run tiles to any length.","description":"A 2 m painted laboratory wall bay, 2.7 m high, with a coved skirting and a dado band on both faces and ports at each end so a run tiles to any length. Overall 2.00 by 2.70 by 0.15 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-lab-wall-module-d46ccd96","cdnUrl":"https://cdn.3dassets.dev/assets/37176/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-lab-wall-module-d46ccd96","thumbnailUrl":"https://cdn.3dassets.dev/assets/37176/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37176/v1/poster.webp","blurhash":"U9HLo9?b00D%?b_3IU0000Rj~qj]x[x]RjD%","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":6144,"triangles":156,"vertices":204,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-2.3841858265427618e-8,-0.076052125614185],"max":[1,2.700000047683716,0.076052125614185]},"sizeMeters":[2,2.7,0.152],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:52.190Z","updatedAt":"2026-09-12T04:44:52.307Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37176/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LabWallModuleScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37176/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37176/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37176/v1/model.glb\" alt=\"Lab Wall Module (Science Laboratory and Cleanroom)\" 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/37176/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/37176/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37175","slug":"science-laboratory-and-cleanroom-lab-wall-module-blue-58f9a493","title":"Lab Wall Module Blue (Science Laboratory and Cleanroom)","summary":"The laboratory wall bay in the second livery, for the end wall of a room that should read as a different space from the same camera.","description":"The laboratory wall bay in the second livery, for the end wall of a room that should read as a different space from the same camera. Overall 2.00 by 2.70 by 0.15 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-lab-wall-module-blue-58f9a493","cdnUrl":"https://cdn.3dassets.dev/assets/37175/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-lab-wall-module-blue-58f9a493","thumbnailUrl":"https://cdn.3dassets.dev/assets/37175/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37175/v1/poster.webp","blurhash":"UA8=jI%j00I8KSgQwIVVh{V=X:t7tRtRjEMw","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":6176,"triangles":156,"vertices":204,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,-2.3841858265427618e-8,-0.076052125614185],"max":[1,2.700000047683716,0.076052125614185]},"sizeMeters":[2,2.7,0.152],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:52.169Z","updatedAt":"2026-09-12T04:44:52.290Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37175/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LabWallModuleBlueScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37175/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37175/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37175/v1/model.glb\" alt=\"Lab Wall Module Blue (Science Laboratory and Cleanroom)\" 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/37175/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/37175/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37177","slug":"science-laboratory-and-cleanroom-cleanroom-wall-panel-085b76f7","title":"Cleanroom Wall Panel (Science Laboratory and Cleanroom)","summary":"A 1 m flush cleanroom wall panel, 2.7 m high, with proud joint battens at each stile and a coved skirt, for a smooth walled suite.","description":"A 1 m flush cleanroom wall panel, 2.7 m high, with proud joint battens at each stile and a coved skirt, for a smooth walled suite. Overall 1.00 by 2.70 by 0.11 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Two panels fill one 2 m floor tile, and the hatch panel and the interlocked door pair share the same ports, so a run mixes all three. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-cleanroom-wall-panel-085b76f7","cdnUrl":"https://cdn.3dassets.dev/assets/37177/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-cleanroom-wall-panel-085b76f7","thumbnailUrl":"https://cdn.3dassets.dev/assets/37177/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37177/v1/poster.webp","blurhash":"U6E:3v?b0000?b%MD%D$00Rk~qt6-;xuD%IU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":7312,"triangles":180,"vertices":262,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5000442650853891,-2.3841858265427618e-8,-0.054065372391834426],"max":[0.5000442650853891,2.700000047683716,0.054065372391834426]},"sizeMeters":[1,2.7,0.108],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:52.701Z","updatedAt":"2026-09-12T04:44:52.805Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37177/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CleanroomWallPanelScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37177/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37177/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37177/v1/model.glb\" alt=\"Cleanroom Wall Panel (Science Laboratory and Cleanroom)\" 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/37177/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/37177/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37178","slug":"science-laboratory-and-cleanroom-cleanroom-window-pane-47d9df5d","title":"Cleanroom Window Panel (Science Laboratory and Cleanroom)","summary":"The cleanroom panel with a flush glazed vision panel in it, so a suite can be seen into without opening it.","description":"The cleanroom panel with a flush glazed vision panel in it, so a suite can be seen into without opening it. Overall 1.00 by 2.70 by 0.11 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-cleanroom-window-pane-47d9df5d","cdnUrl":"https://cdn.3dassets.dev/assets/37178/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-cleanroom-window-pane-47d9df5d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37178/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37178/v1/poster.webp","blurhash":"U4EfWq_30000~q%g4n4n00Rj_3xu-;xuD%D%","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":19160,"triangles":612,"vertices":738,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5000442622152819,-8.344650304081824e-9,-0.054065372391834426],"max":[0.5000442622152819,2.700000047683716,0.054065372391834426]},"sizeMeters":[1,2.7,0.108],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:53.355Z","updatedAt":"2026-09-12T04:44:53.454Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37178/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CleanroomWindowPanelScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37178/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37178/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37178/v1/model.glb\" alt=\"Cleanroom Window Panel (Science Laboratory and Cleanroom)\" 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/37178/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/37178/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37179","slug":"science-laboratory-and-cleanroom-pass-through-hatch-ee264246","title":"Pass Through Hatch (Science Laboratory and Cleanroom)","summary":"A cleanroom panel with a pass through hatch let into it: a stainless lined chamber with a hinged glazed door, a shelf inside and an interlock lamp above.","description":"A cleanroom panel with a pass through hatch let into it: a stainless lined chamber with a hinged glazed door, a shelf inside and an interlock lamp above. Overall 1.00 by 2.70 by 0.57 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. One door is modelled. A real pass through interlocks a door on each face, and the second leaf is left off rather than shipped as a leaf that cannot be reached from either side of a single panel. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-pass-through-hatch-ee264246","cdnUrl":"https://cdn.3dassets.dev/assets/37179/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-pass-through-hatch-ee264246","thumbnailUrl":"https://cdn.3dassets.dev/assets/37179/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37179/v1/poster.webp","blurhash":"UECGV@D%00~q?bofD$RjM{ofozRjt7WBRjt7","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41152,"triangles":1620,"vertices":1567,"meshes":8,"materials":7,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.5000442624360593,-9.53674295089968e-9,-0.054065372391834426],"max":[0.5000442624360593,2.700000047683716,0.5200155599034587]},"sizeMeters":[1,2.7,0.574],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:53.867Z","updatedAt":"2026-09-12T04:44:53.961Z","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/37179/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 PassThroughHatchScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37179/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/37179/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37179/v1/model.glb\" alt=\"Pass Through Hatch (Science Laboratory and Cleanroom)\" 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/37179/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/37179/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37180","slug":"science-laboratory-and-cleanroom-interlocked-door-pair-06405812","title":"Interlocked Door Pair (Science Laboratory and Cleanroom)","summary":"An interlocked door pair: a 2 m wall bay with a glazed leaf, a short vestibule behind it and a second leaf on the far side, with a lamp over each door.","description":"An interlocked door pair: a 2 m wall bay with a glazed leaf, a short vestibule behind it and a second leaf on the far side, with a lamp over each door. Overall 2.00 by 2.70 by 1.49 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The origin is on the wall run line and the vestibule extends toward +Z, so the module drops into a cleanroom panel run with its airlock inside the suite. Both leaves swing; the interlock itself is logic, not geometry. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-interlocked-door-pair-06405812","cdnUrl":"https://cdn.3dassets.dev/assets/37180/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-interlocked-door-pair-06405812","thumbnailUrl":"https://cdn.3dassets.dev/assets/37180/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37180/v1/poster.webp","blurhash":"U9Hx$%?b00j[~q%ND%D%00M{%Nt7%MxuRjM{","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":48408,"triangles":2248,"vertices":2366,"meshes":12,"materials":8,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.0011999607086182,-2.3841858265427618e-8,-0.07402113080024719],"max":[1.0011999607086182,2.700000047683716,1.4140211343765259]},"sizeMeters":[2.002,2.7,1.488],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:53.886Z","updatedAt":"2026-09-12T04:44:53.993Z","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/37180/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 InterlockedDoorPairScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37180/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/37180/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37180/v1/model.glb\" alt=\"Interlocked Door Pair (Science Laboratory and Cleanroom)\" 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/37180/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/37180/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37181","slug":"science-laboratory-and-cleanroom-cleanroom-ceiling-fil-af55f569","title":"Cleanroom Ceiling Filter Panel (Science Laboratory and Cleanroom)","summary":"A 1 m cleanroom ceiling filter panel: a gasketed steel frame round a pleated filter face, with a lit edge strip and a grid guard under it.","description":"A 1 m cleanroom ceiling filter panel: a gasketed steel frame round a pleated filter face, with a lit edge strip and a grid guard under it. Overall 1.00 by 0.20 by 1.00 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Placed at ceiling height, and rests on y=0 like everything else, so a panel at a 2.7 m ceiling is placed at y=2.7 minus its own height. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-cleanroom-ceiling-fil-af55f569","cdnUrl":"https://cdn.3dassets.dev/assets/37181/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-cleanroom-ceiling-fil-af55f569","thumbnailUrl":"https://cdn.3dassets.dev/assets/37181/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37181/v1/poster.webp","blurhash":"UDC%BTt800WB-=j[M{ay00Rj~qfi00WU%May","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21728,"triangles":708,"vertices":859,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.5,0.00002136429773770543,-0.5],"max":[0.5,0.19997863838447133,0.5]},"sizeMeters":[1,0.2,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:54.362Z","updatedAt":"2026-09-12T04:44:54.486Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37181/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CleanroomCeilingFilterPanelScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37181/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37181/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37181/v1/model.glb\" alt=\"Cleanroom Ceiling Filter Panel (Science Laboratory and Cleanroom)\" 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/37181/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/37181/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37182","slug":"science-laboratory-and-cleanroom-ceiling-service-panel-66c1c514","title":"Ceiling Service Panel (Science Laboratory and Cleanroom)","summary":"A 1 m blank ceiling panel to fill between the filters: a steel frame round a plain face with a small diffuser and a sprinkler stub.","description":"A 1 m blank ceiling panel to fill between the filters: a steel frame round a plain face with a small diffuser and a sprinkler stub. Overall 1.00 by 0.13 by 1.00 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-ceiling-service-panel-66c1c514","cdnUrl":"https://cdn.3dassets.dev/assets/37182/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-ceiling-service-panel-66c1c514","thumbnailUrl":"https://cdn.3dassets.dev/assets/37182/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37182/v1/poster.webp","blurhash":"UDCsmst700WC?cj[M_fR00Rj~qj[00WB%Max","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18792,"triangles":684,"vertices":793,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5,-0.000004427568059808817,-0.5],"max":[0.5,0.1300044227996882,0.5]},"sizeMeters":[1,0.13,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:55.035Z","updatedAt":"2026-09-12T04:44:55.293Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37182/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CeilingServicePanelScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37182/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37182/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37182/v1/model.glb\" alt=\"Ceiling Service Panel (Science Laboratory and Cleanroom)\" 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/37182/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/37182/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37183","slug":"science-laboratory-and-cleanroom-gowning-bench-and-loc-cb4bb8db","title":"Gowning Bench And Locker (Science Laboratory and Cleanroom)","summary":"A gowning station: a four door locker bank with a shelf over it, a step over bench in front of it and a rail of hooks, all in a 1.2 m bay.","description":"A gowning station: a four door locker bank with a shelf over it, a step over bench in front of it and a rail of hooks, all in a 1.2 m bay. Overall 1.24 by 2.00 by 1.00 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. The step over bench is the point of the model: a gowning room is divided by it, and the clean side is the side the lockers are not on. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-gowning-bench-and-loc-cb4bb8db","cdnUrl":"https://cdn.3dassets.dev/assets/37183/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-gowning-bench-and-loc-cb4bb8db","thumbnailUrl":"https://cdn.3dassets.dev/assets/37183/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37183/v1/poster.webp","blurhash":"UCE{nU9F00?c~qWB4nWB00xu_3Io?HxuM{Rk","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":47548,"triangles":2640,"vertices":2350,"meshes":17,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.6200354082788587,0.000006420166541842853,-0.49006104464470324],"max":[0.6200354082788587,2,0.5100186191724112]},"sizeMeters":[1.24,2,1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:55.566Z","updatedAt":"2026-09-12T04:44:55.663Z","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/37183/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 GowningBenchAndLockerScienceLaboratoryAndCleanroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37183/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/37183/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37183/v1/model.glb\" alt=\"Gowning Bench And Locker (Science Laboratory and Cleanroom)\" 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/37183/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/37183/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37184","slug":"science-laboratory-and-cleanroom-air-shower-vestibule-2d8d0201","title":"Air Shower Vestibule (Science Laboratory and Cleanroom)","summary":"An air shower vestibule: a 1.6 m chamber with a grille floor, nozzle walls on both sides, a filter header over each doorway and a control plate, open through from front to back.","description":"An air shower vestibule: a 1.6 m chamber with a grille floor, nozzle walls on both sides, a filter header over each doorway and a control plate, open through from front to back. Overall 1.60 by 2.30 by 1.65 m (X by Y by Z). Metre units, +Y up, the side an operator stands on toward +Z, resting on y=0. Both doorways are open and there is no roof panel over the chamber, so the inside is visible from a camera above and a walkable demo can pass straight through it. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-air-shower-vestibule-2d8d0201","cdnUrl":"https://cdn.3dassets.dev/assets/37184/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-air-shower-vestibule-2d8d0201","thumbnailUrl":"https://cdn.3dassets.dev/assets/37184/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37184/v1/poster.webp","blurhash":"UFHC4ZM{00~q?bofM{WX9Ft7IUIU%gt7M{Rj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":61460,"triangles":1632,"vertices":2892,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.7999847158672759,4.470348535789981e-10,-0.8209999799728394],"max":[0.7999847158672759,2.299999952316284,0.8321219185684934]},"sizeMeters":[1.6,2.3,1.653],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:55.612Z","updatedAt":"2026-09-12T04:44:55.792Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37184/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AirShowerVestibuleScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37184/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37184/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37184/v1/model.glb\" alt=\"Air Shower Vestibule (Science Laboratory and Cleanroom)\" 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/37184/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/37184/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37185","slug":"science-laboratory-and-cleanroom-laborat-fe14c4c6-starter-scene","title":"Laboratory floor, open topped (Science Laboratory and Cleanroom)","summary":"A whole research laboratory and its cleanroom suite laid out on 2 m floor tiles and 2 m wall bays, deliberately left open topped so the camera and a walking player can see into every part of it. Along the back wall a seven module bench run turns a corner on its corner unit...","description":"A whole research laboratory and its cleanroom suite laid out on 2 m floor tiles and 2 m wall bays, deliberately left open topped so the camera and a walking player can see into every part of it. Along the back wall a seven module bench run turns a corner on its corner unit and returns down the left wall, carrying reagent shelves, a service spine of gas taps, the wash up sink, a balance in its draught shield, a pH meter, a hot plate stirrer, a vortex mixer and a bench of racks, beakers, flasks, cylinders and plates, with a spectrophotometer, a centrifuge and three microscopes on the return. A five module island runs down the middle with a rotary evaporator, a water bath, a gel tank and power pack, a fraction collector and an inverted microscope on it, and stools drawn up to both. Two fume cupboards, one with its sash raised, stand beside a biosafety cabinet at the back, with the minus eighty freezer, the laboratory fridge and the incubator against the cleanroom wall and the autoclave, drying oven and vacuum pump on a bench at the front. The left wall carries the whiteboard, the safety shower, the eyewash station, two chemical stores and the waste bins, with the writing up desk in the open. Behind a 1 m cleanroom panel run with two pass through hatches, two vision panels and an interlocked door pair sits the suite itself: gowning benches and lockers under three ceiling filter panels, a walk through air shower, a clean bench of plates, vials, tips and glassware, an instrument bench down the side wall and a particle counter on its stand.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-laborat-fe14c4c6-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/37185/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-laborat-fe14c4c6-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/37185/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37185/v1/poster.webp","blurhash":"U6EV?4of00Rk?b?bRj9F00xu~qRP9F8{V[-p","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":2198052,"triangles":97496,"vertices":106389,"meshes":433,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-10.016052125614184,-0.06003021365965735,-6.016052125614185],"max":[8.014065372391835,2.7599786383844713,6.000044265085389]},"sizeMeters":[18.03,2.82,12.016],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:57.633Z","updatedAt":"2026-09-12T04:44:57.728Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37185/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LaboratoryFloorOpenToppedScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37185/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37185/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37185/v1/model.glb\" alt=\"Laboratory floor, open topped (Science Laboratory and Cleanroom)\" 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/37185/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/37185/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37186","slug":"science-laboratory-and-cleanroom-cleanroom-gowning-sui-101b73bc","title":"Cleanroom gowning suite (Science Laboratory and Cleanroom)","summary":"The cleanroom end on its own at room scale: a panelled enclosure of flush 1 m wall panels with a vision panel, a pass through hatch and the interlocked door pair into it, a run of gowning benches and lockers under the ceiling filter panels, the air shower to walk through, and...","description":"The cleanroom end on its own at room scale: a panelled enclosure of flush 1 m wall panels with a vision panel, a pass through hatch and the interlocked door pair into it, a run of gowning benches and lockers under the ceiling filter panels, the air shower to walk through, and a clean bench set out with plates, vials, tip boxes, a pipette stand and glassware, with a particle counter and a differential pressure gauge reading the room. Open topped apart from the filter panels, so the suite can be seen into from above.","status":"published","url":"https://3dassets.dev/assets/science-laboratory-and-cleanroom-cleanroom-gowning-sui-101b73bc","cdnUrl":"https://cdn.3dassets.dev/assets/37186/v1/model.glb","downloadUrl":"https://3dassets.dev/download/science-laboratory-and-cleanroom-cleanroom-gowning-sui-101b73bc","thumbnailUrl":"https://cdn.3dassets.dev/assets/37186/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37186/v1/poster.webp","blurhash":"U6F~jk-;00D%~qRj9Zt700IU.7t79E%MjuM{","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":886636,"triangles":36472,"vertices":42698,"meshes":151,"materials":12,"textures":0,"animations":[],"boundingBox":{"min":[-4.014065372391834,-0.06003021365965735,-4.014065372391834],"max":[4.014065372391834,2.7599786383844713,4.034021130800247]},"sizeMeters":[8.028,2.82,8.048],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T04:44:57.894Z","updatedAt":"2026-09-12T04:44:57.993Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37186/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CleanroomGowningSuiteScienceLaboratoryAndCleanroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37186/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37186/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37186/v1/model.glb\" alt=\"Cleanroom gowning suite (Science Laboratory and Cleanroom)\" 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/37186/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/37186/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"science-laboratory-and-cleanroom","title":"Science Laboratory and Cleanroom","url":"https://3dassets.dev/demos/science-laboratory-and-cleanroom"}}}