{"data":{"id":159,"slug":"jelly-friends-playroom","title":"Jelly Friends Playroom","summary":"Eight original squishy translucent jelly characters in four squeeze states each, with a calm oak playroom of modular floors, walls, swing, trampoline and toys.","description":"Jelly Friends Playroom is a set of eight original stress-ball characters and the sunlit room they live in, built at first-person close-up density. Each jelly is a glossy translucent body with dark bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, and each ships in four separate posed models: at rest, squashed flat, stretched tall and pulled into two halves joined by tapering strands. There is no skinning and no soft-body data anywhere in this pack, so a squeeze is a different model rather than a deformation; the only motion is rigid node transforms, a gentle whole-body bob on every jelly and a small rock on ears, fins, an antenna and a tail. The room is modular 2 m oak floor tiles and 2 m wall bays with a window bay, furnished with an A-frame swing, a small trampoline, a lift-lid toy box, a low shelf, cushions, a rug, a paper lantern lamp and wooden toys, all in pale oak, sage, cream, dusty blue and clay. Original CC0 geometry prepared for human review.","url":"https://3dassets.dev/packs/jelly-friends-playroom","coverUrl":"https://cdn.3dassets.dev/assets/27646/v1/poster.webp","assetCount":51,"aiGenerated":true,"aiGeneratedAssetCount":51,"aiModels":["Claude Fable 5.1"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":18091024,"totalTriangles":525272,"starterScene":{"id":"27646","slug":"jelly-friends-playroom-afternoon-playroo-c0481e25-starter-scene","title":"Afternoon Playroom (Jelly Friends Playroom)","summary":"A sunlit oak playroom on a 6 by 4 m floor with two walls closed and a tall window behind. Three jelly friends rest together on the sage rug, two lie squashed by the trampoline, two stand stretched up at the swing, one has been pulled into two halves on the floor, one sits on...","description":"A sunlit oak playroom on a 6 by 4 m floor with two walls closed and a tall window behind. Three jelly friends rest together on the sage rug, two lie squashed by the trampoline, two stand stretched up at the swing, one has been pulled into two halves on the floor, one sits on the low shelf and one peeks out of the open toy box. Cushions, a folded blanket, a paper lantern lamp, two ferns, a stool, stacking rings and loose wooden balls furnish the rest.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-afternoon-playroo-c0481e25-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/27646/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-afternoon-playroo-c0481e25-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/27646/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27646/v1/poster.webp","blurhash":"U9IOX-t800%1?w-;M_D*00t8RiD%MvRkRlM{","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":4321880,"triangles":140228,"vertices":282797,"meshes":230,"materials":20,"textures":0,"animations":[],"boundingBox":{"min":[-3.099989316464569,-0.00002684198322411291,-2.100050355317118],"max":[3.0000640521877675,2.6000380527694134,2.0000640521877675]},"sizeMeters":[6.1,2.6,4.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":2,"publishedAt":"2026-09-08T00:00:56.624Z","updatedAt":"2026-09-08T02:03:42.405Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27646/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AfternoonPlayroomJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27646/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27646/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27646/v1/model.glb\" alt=\"Afternoon Playroom (Jelly Friends Playroom)\" 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/27646/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/27646/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"27597","slug":"jelly-friends-playroom-jelly-moss-01f54980","title":"Moss Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Moss, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear green squishy body with two tiny leaf ears on the crown, game asset for a cute slime mascot.","description":"Moss is a squishy translucent jelly stress-ball character in clear green, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two tiny leaf ears on the crown. Dimensions 0.30 x 0.32 x 0.28 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both leaf ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-moss-01f54980","cdnUrl":"https://cdn.3dassets.dev/assets/27597/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-moss-01f54980","thumbnailUrl":"https://cdn.3dassets.dev/assets/27597/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27597/v1/poster.webp","blurhash":"UIAUyht700RQV[bZoMaL00WB.joMkBjbofkU","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":322300,"triangles":9240,"vertices":18582,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.15199317038059235,-0.000001338309090187506,-0.1398400252529593],"max":[0.15199317038059235,0.32256769818067554,0.13988477979940545]},"sizeMeters":[0.304,0.323,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:33.811Z","updatedAt":"2026-09-08T00:00:33.991Z","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/27597/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 MossJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27597/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/27597/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27597/v1/model.glb\" alt=\"Moss Jelly Character at Rest (Jelly Friends Playroom)\" 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/27597/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/27597/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27596","slug":"jelly-friends-playroom-jelly-moss-squashed-11fa0bf3","title":"Moss Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Moss, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear green squishy body with two tiny leaf ears on the crown, game asset for a cute slime mascot.","description":"Moss is a squishy translucent jelly stress-ball character in clear green, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two tiny leaf ears on the crown. Dimensions 0.38 x 0.23 x 0.38 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both leaf ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-moss-squashed-11fa0bf3","cdnUrl":"https://cdn.3dassets.dev/assets/27596/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-moss-squashed-11fa0bf3","thumbnailUrl":"https://cdn.3dassets.dev/assets/27596/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27596/v1/poster.webp","blurhash":"UGAn#yxu4UWAMyj[oyV[00Rj.jjb%fayWCoy","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":322332,"triangles":9240,"vertices":18584,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.19151970744132996,-0.000003845258129742124,-0.19030396907200114],"max":[0.19151970744132996,0.2307677130818367,0.1912775012375809]},"sizeMeters":[0.383,0.231,0.382],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:33.770Z","updatedAt":"2026-09-08T00:00:33.877Z","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/27596/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 MossJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27596/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/27596/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27596/v1/model.glb\" alt=\"Moss Jelly Character Squashed (Jelly Friends Playroom)\" 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/27596/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/27596/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27599","slug":"jelly-friends-playroom-jelly-moss-stretched-701c89d3","title":"Moss Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Moss, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear green squishy body with two tiny leaf ears on the crown, game asset for a cute slime mascot.","description":"Moss is a squishy translucent jelly stress-ball character in clear green, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two tiny leaf ears on the crown. Dimensions 0.19 x 0.47 x 0.18 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both leaf ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-moss-stretched-701c89d3","cdnUrl":"https://cdn.3dassets.dev/assets/27599/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-moss-stretched-701c89d3","thumbnailUrl":"https://cdn.3dassets.dev/assets/27599/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27599/v1/poster.webp","blurhash":"UC9RwEx[00IBt7bFRQe;4URj.jt7oyoMjaW-","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":336400,"triangles":9240,"vertices":18588,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.09672871432218669,0,-0.08901311012991843],"max":[0.09672871432218669,0.4648577279829979,0.08901311012991843]},"sizeMeters":[0.193,0.465,0.178],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:33.895Z","updatedAt":"2026-09-08T00:00:34.032Z","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/27599/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 MossJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27599/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/27599/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27599/v1/model.glb\" alt=\"Moss Jelly Character Stretched (Jelly Friends Playroom)\" 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/27599/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/27599/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27598","slug":"jelly-friends-playroom-jelly-moss-pulled-apart-e19e167d","title":"Moss Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Moss, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear green squishy body with two tiny leaf ears on the crown, game asset for a cute slime mascot.","description":"Moss is a squishy translucent jelly stress-ball character in clear green, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two tiny leaf ears on the crown. Dimensions 0.23 x 0.29 x 0.35 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both leaf ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-moss-pulled-apart-e19e167d","cdnUrl":"https://cdn.3dassets.dev/assets/27598/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-moss-pulled-apart-e19e167d","thumbnailUrl":"https://cdn.3dassets.dev/assets/27598/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27598/v1/poster.webp","blurhash":"UFBhVz%M00aLIBRQoztQ00R%.jRPtQxut7af","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":577248,"triangles":15380,"vertices":31246,"meshes":12,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.1155199483036995,-0.0000010598669752948098,-0.17290692234334926],"max":[0.1155199483036995,0.2858477205324173,0.1750414676135026]},"sizeMeters":[0.231,0.286,0.348],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:33.879Z","updatedAt":"2026-09-08T00:00:34.013Z","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/27598/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 MossJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27598/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/27598/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27598/v1/model.glb\" alt=\"Moss Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27598/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/27598/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27600","slug":"jelly-friends-playroom-jelly-pebble-e445258c","title":"Pebble Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Pebble, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear grey blue squishy body with a wide low body and sleepy half-closed eyes, game asset for a cute slime mascot.","description":"Pebble is a squishy translucent jelly stress-ball character in clear grey blue, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a wide low body and sleepy half-closed eyes. Dimensions 0.35 x 0.18 x 0.30 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-pebble-e445258c","cdnUrl":"https://cdn.3dassets.dev/assets/27600/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-pebble-e445258c","thumbnailUrl":"https://cdn.3dassets.dev/assets/27600/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27600/v1/poster.webp","blurhash":"UJC%jfxu00V[xvofadWB00Rj?wayITRjozof","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":245572,"triangles":6288,"vertices":13170,"meshes":8,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.1739998757839203,0.000006643960600127841,-0.14963660083971952],"max":[0.1739998757839203,0.18499335842358566,0.15019134142417243]},"sizeMeters":[0.348,0.185,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:35.479Z","updatedAt":"2026-09-08T00:00:35.570Z","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/27600/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 PebbleJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27600/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/27600/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27600/v1/model.glb\" alt=\"Pebble Jelly Character at Rest (Jelly Friends Playroom)\" 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/27600/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/27600/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27602","slug":"jelly-friends-playroom-jelly-pebble-squashed-9552fbce","title":"Pebble Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Pebble, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear grey blue squishy body with a wide low body and sleepy half-closed eyes, game asset for a cute slime mascot.","description":"Pebble is a squishy translucent jelly stress-ball character in clear grey blue, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a wide low body and sleepy half-closed eyes. Dimensions 0.44 x 0.12 x 0.41 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-pebble-squashed-9552fbce","cdnUrl":"https://cdn.3dassets.dev/assets/27602/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-pebble-squashed-9552fbce","thumbnailUrl":"https://cdn.3dassets.dev/assets/27602/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27602/v1/poster.webp","blurhash":"UJBgb;of4Tjso#oMe.ay00WB?wjsROWBbcoM","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":245580,"triangles":6288,"vertices":13168,"meshes":8,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.2192399650812149,-0.000014205354230030498,-0.20363684002950455],"max":[0.2192399650812149,0.11674668389370339,0.20462683837521004]},"sizeMeters":[0.438,0.117,0.408],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:35.679Z","updatedAt":"2026-09-08T00:00:35.782Z","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/27602/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 PebbleJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27602/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/27602/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27602/v1/model.glb\" alt=\"Pebble Jelly Character Squashed (Jelly Friends Playroom)\" 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/27602/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/27602/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27601","slug":"jelly-friends-playroom-jelly-pebble-stretched-50716896","title":"Pebble Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Pebble, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear grey blue squishy body with a wide low body and sleepy half-closed eyes, game asset for a cute slime mascot.","description":"Pebble is a squishy translucent jelly stress-ball character in clear grey blue, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a wide low body and sleepy half-closed eyes. Dimensions 0.23 x 0.30 x 0.20 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-pebble-stretched-50716896","cdnUrl":"https://cdn.3dassets.dev/assets/27601/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-pebble-stretched-50716896","thumbnailUrl":"https://cdn.3dassets.dev/assets/27601/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27601/v1/poster.webp","blurhash":"UGD0r@x]00IU%Ms:RPRj00WB?woeRja#t7j[","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":245572,"triangles":6288,"vertices":13168,"meshes":8,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.11705101617086497,0,-0.1006743922635445],"max":[0.11705101617086497,0.299699991941452,0.1006743922635445]},"sizeMeters":[0.234,0.3,0.201],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:35.618Z","updatedAt":"2026-09-08T00:00:35.736Z","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/27601/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 PebbleJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27601/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/27601/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27601/v1/model.glb\" alt=\"Pebble Jelly Character Stretched (Jelly Friends Playroom)\" 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/27601/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/27601/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27603","slug":"jelly-friends-playroom-jelly-pebble-pulled-apart-60859797","title":"Pebble Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Pebble, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear grey blue squishy body with a wide low body and sleepy half-closed eyes, game asset for a cute slime mascot.","description":"Pebble is a squishy translucent jelly stress-ball character in clear grey blue, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a wide low body and sleepy half-closed eyes. Dimensions 0.26 x 0.15 x 0.36 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-pebble-pulled-apart-60859797","cdnUrl":"https://cdn.3dassets.dev/assets/27603/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-pebble-pulled-apart-60859797","thumbnailUrl":"https://cdn.3dassets.dev/assets/27603/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27603/v1/poster.webp","blurhash":"UFDADe%M00oytRMxRi%N00M{?wV@Mw%gxuIA","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":486456,"triangles":12428,"vertices":25832,"meshes":10,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.1322399079799652,-0.000007263502968923863,-0.17801638646558632],"max":[0.1322399079799652,0.15540461362278646,0.180369988862618]},"sizeMeters":[0.264,0.155,0.358],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:35.807Z","updatedAt":"2026-09-08T00:00:36.004Z","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/27603/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 PebbleJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27603/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/27603/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27603/v1/model.glb\" alt=\"Pebble Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27603/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/27603/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27604","slug":"jelly-friends-playroom-jelly-yuzu-e5cfc031","title":"Yuzu Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Yuzu, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear lemon yellow squishy body with a tall drop-shaped body and a single antenna ball, game asset for a cute slime mascot.","description":"Yuzu is a squishy translucent jelly stress-ball character in clear lemon yellow, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a tall drop-shaped body and a single antenna ball. Dimensions 0.23 x 0.41 x 0.22 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The antenna stalk and its ball are one node on a pivot at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-yuzu-e5cfc031","cdnUrl":"https://cdn.3dassets.dev/assets/27604/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-yuzu-e5cfc031","thumbnailUrl":"https://cdn.3dassets.dev/assets/27604/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27604/v1/poster.webp","blurhash":"UNEVoyof02V[WXayjZoe03j?~la#oIazkCj?","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":301564,"triangles":8548,"vertices":17319,"meshes":9,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.1155606207803356,0,-0.10978804492468756],"max":[0.1155606207803356,0.41549998795986176,0.10978804492468756]},"sizeMeters":[0.231,0.415,0.22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:37.133Z","updatedAt":"2026-09-08T00:00:37.238Z","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/27604/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 YuzuJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27604/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/27604/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27604/v1/model.glb\" alt=\"Yuzu Jelly Character at Rest (Jelly Friends Playroom)\" 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/27604/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/27604/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27606","slug":"jelly-friends-playroom-jelly-yuzu-squashed-0e56d6ff","title":"Yuzu Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Yuzu, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear lemon yellow squishy body with a tall drop-shaped body and a single antenna ball, game asset for a cute slime mascot.","description":"Yuzu is a squishy translucent jelly stress-ball character in clear lemon yellow, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a tall drop-shaped body and a single antenna ball. Dimensions 0.31 x 0.29 x 0.32 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The antenna stalk and its ball are one node on a pivot at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-yuzu-squashed-0e56d6ff","cdnUrl":"https://cdn.3dassets.dev/assets/27606/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-yuzu-squashed-0e56d6ff","thumbnailUrl":"https://cdn.3dassets.dev/assets/27606/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27606/v1/poster.webp","blurhash":"UMGumLt703jH9JWB%Jfl02ae~lR+--flWCs+","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":301628,"triangles":8548,"vertices":17323,"meshes":9,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.15521030308133088,-0.000005220436077049695,-0.15925398468971252],"max":[0.15521030308133088,0.28810000286102294,0.16013419761683945]},"sizeMeters":[0.31,0.288,0.319],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:37.359Z","updatedAt":"2026-09-08T00:00:37.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/27606/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 YuzuJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27606/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/27606/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27606/v1/model.glb\" alt=\"Yuzu Jelly Character Squashed (Jelly Friends Playroom)\" 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/27606/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/27606/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27605","slug":"jelly-friends-playroom-jelly-yuzu-stretched-4464e6ca","title":"Yuzu Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Yuzu, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear lemon yellow squishy body with a tall drop-shaped body and a single antenna ball, game asset for a cute slime mascot.","description":"Yuzu is a squishy translucent jelly stress-ball character in clear lemon yellow, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a tall drop-shaped body and a single antenna ball. Dimensions 0.15 x 0.61 x 0.14 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The antenna stalk and its ball are one node on a pivot at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-yuzu-stretched-4464e6ca","cdnUrl":"https://cdn.3dassets.dev/assets/27605/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-yuzu-stretched-4464e6ca","thumbnailUrl":"https://cdn.3dassets.dev/assets/27605/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27605/v1/poster.webp","blurhash":"UEDJ8^t701IVkBfkWBf504WV~SofV{WDoct5","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":301612,"triangles":8548,"vertices":17321,"meshes":9,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.07295673053309075,0,-0.06932536370113866],"max":[0.07295673053309075,0.6129699954104424,0.06932536370113866]},"sizeMeters":[0.146,0.613,0.139],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:37.328Z","updatedAt":"2026-09-08T00:00:37.467Z","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/27605/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 YuzuJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27605/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/27605/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27605/v1/model.glb\" alt=\"Yuzu Jelly Character Stretched (Jelly Friends Playroom)\" 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/27605/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/27605/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27607","slug":"jelly-friends-playroom-jelly-yuzu-pulled-apart-e043df9b","title":"Yuzu Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Yuzu, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear lemon yellow squishy body with a tall drop-shaped body and a single antenna ball, game asset for a cute slime mascot.","description":"Yuzu is a squishy translucent jelly stress-ball character in clear lemon yellow, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a tall drop-shaped body and a single antenna ball. Dimensions 0.18 x 0.36 x 0.32 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The antenna stalk and its ball are one node on a pivot at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-yuzu-pulled-apart-e043df9b","cdnUrl":"https://cdn.3dassets.dev/assets/27607/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-yuzu-pulled-apart-e043df9b","thumbnailUrl":"https://cdn.3dassets.dev/assets/27607/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27607/v1/poster.webp","blurhash":"UNGbh1xt02RjE3NHxYxs03oc~lM}xqt7bIay","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":542532,"triangles":14688,"vertices":29985,"meshes":11,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.08780623859680615,0,-0.15723977563634142],"max":[0.08780623859680615,0.36454001031160355,0.1583916898453015]},"sizeMeters":[0.176,0.365,0.316],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:37.718Z","updatedAt":"2026-09-08T00:00:37.818Z","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/27607/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 YuzuJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27607/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/27607/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27607/v1/model.glb\" alt=\"Yuzu Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27607/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/27607/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27608","slug":"jelly-friends-playroom-jelly-plum-967c0b8a","title":"Plum Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Plum, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear violet squishy body with a pear-shaped body and a small tail tuft at the back, game asset for a cute slime mascot.","description":"Plum is a squishy translucent jelly stress-ball character in clear violet, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a pear-shaped body and a small tail tuft at the back. Dimensions 0.30 x 0.29 x 0.33 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The tail tuft is its own node on a pivot where it leaves the back. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-plum-967c0b8a","cdnUrl":"https://cdn.3dassets.dev/assets/27608/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-plum-967c0b8a","thumbnailUrl":"https://cdn.3dassets.dev/assets/27608/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27608/v1/poster.webp","blurhash":"UIDk~4-r00EJa$ahjZbE00NE^ns;RibYt7oN","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":329416,"triangles":8948,"vertices":18034,"meshes":9,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.14798790216445923,0.0000045628886301829485,-0.19065425126666896],"max":[0.14798790216445923,0.28799542471360373,0.13399157330401068]},"sizeMeters":[0.296,0.288,0.325],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:39.816Z","updatedAt":"2026-09-08T00:00:39.914Z","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/27608/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 PlumJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27608/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/27608/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27608/v1/model.glb\" alt=\"Plum Jelly Character at Rest (Jelly Friends Playroom)\" 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/27608/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/27608/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27610","slug":"jelly-friends-playroom-jelly-plum-squashed-2da4d2cd","title":"Plum Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Plum, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear violet squishy body with a pear-shaped body and a small tail tuft at the back, game asset for a cute slime mascot.","description":"Plum is a squishy translucent jelly stress-ball character in clear violet, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a pear-shaped body and a small tail tuft at the back. Dimensions 0.37 x 0.17 x 0.42 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The tail tuft is its own node on a pivot where it leaves the back. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-plum-squashed-2da4d2cd","cdnUrl":"https://cdn.3dassets.dev/assets/27610/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-plum-squashed-2da4d2cd","thumbnailUrl":"https://cdn.3dassets.dev/assets/27610/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27610/v1/poster.webp","blurhash":"UJB{Zzxv0cRiWVayoLfk00NF^ns;adfifRjZ","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":315532,"triangles":8948,"vertices":18040,"meshes":9,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.18647964298725128,0.000003705351292376813,-0.2338765707693461],"max":[0.18647964298725128,0.1727962991309769,0.18224993824302127]},"sizeMeters":[0.373,0.173,0.416],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:39.020Z","updatedAt":"2026-09-08T00:00:39.112Z","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/27610/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 PlumJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27610/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/27610/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27610/v1/model.glb\" alt=\"Plum Jelly Character Squashed (Jelly Friends Playroom)\" 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/27610/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/27610/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27609","slug":"jelly-friends-playroom-jelly-plum-stretched-80b086cf","title":"Plum Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Plum, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear violet squishy body with a pear-shaped body and a small tail tuft at the back, game asset for a cute slime mascot.","description":"Plum is a squishy translucent jelly stress-ball character in clear violet, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a pear-shaped body and a small tail tuft at the back. Dimensions 0.20 x 0.47 x 0.23 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The tail tuft is its own node on a pivot where it leaves the back. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-plum-stretched-80b086cf","cdnUrl":"https://cdn.3dassets.dev/assets/27609/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-plum-stretched-80b086cf","thumbnailUrl":"https://cdn.3dassets.dev/assets/27609/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27609/v1/poster.webp","blurhash":"UDByOL-r0053kBafWBkA0vS0^Usqafj[off8","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":329568,"triangles":8948,"vertices":18043,"meshes":9,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.09902315020332018,0,-0.14237387121147954],"max":[0.09902315020332018,0.4665600061416626,0.08911300388920547]},"sizeMeters":[0.198,0.467,0.231],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:38.980Z","updatedAt":"2026-09-08T00:00:39.075Z","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/27609/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 PlumJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27609/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/27609/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27609/v1/model.glb\" alt=\"Plum Jelly Character Stretched (Jelly Friends Playroom)\" 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/27609/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/27609/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27611","slug":"jelly-friends-playroom-jelly-plum-pulled-apart-59c2ed37","title":"Plum Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Plum, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear violet squishy body with a pear-shaped body and a small tail tuft at the back, game asset for a cute slime mascot.","description":"Plum is a squishy translucent jelly stress-ball character in clear violet, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a pear-shaped body and a small tail tuft at the back. Dimensions 0.23 x 0.24 x 0.34 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The tail tuft is its own node on a pivot where it leaves the back. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-plum-pulled-apart-59c2ed37","cdnUrl":"https://cdn.3dassets.dev/assets/27611/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-plum-pulled-apart-59c2ed37","thumbnailUrl":"https://cdn.3dassets.dev/assets/27611/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27611/v1/poster.webp","blurhash":"UCFXu+%200xbn-D~NF-Y00Rl^UWAM_%3xuNY","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":570400,"triangles":15088,"vertices":30702,"meshes":11,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.112484269966251,0,-0.16943835198168564],"max":[0.112484269966251,0.24191999435424805,0.1718114524523554]},"sizeMeters":[0.225,0.242,0.341],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:40.468Z","updatedAt":"2026-09-08T00:00:40.581Z","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/27611/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 PlumJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27611/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/27611/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27611/v1/model.glb\" alt=\"Plum Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27611/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/27611/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27612","slug":"jelly-friends-playroom-jelly-cloud-594f2b37","title":"Cloud Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cloud, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear white blue squishy body with a ring of soft scallops around the crown, game asset for a cute slime mascot.","description":"Cloud is a squishy translucent jelly stress-ball character in clear white blue, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a ring of soft scallops around the crown. Dimensions 0.31 x 0.26 x 0.29 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The scalloped crown is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cloud-594f2b37","cdnUrl":"https://cdn.3dassets.dev/assets/27612/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cloud-594f2b37","thumbnailUrl":"https://cdn.3dassets.dev/assets/27612/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27612/v1/poster.webp","blurhash":"UMH__Tof00of?bt7IURj00of~qRjD%Rjt7t7","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":405516,"triangles":11408,"vertices":22772,"meshes":9,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.15699546039104462,-0.0000017507961701662689,-0.1460138754056546],"max":[0.15699546039104462,0.2617617601767343,0.1460138754056546]},"sizeMeters":[0.314,0.262,0.292],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:40.565Z","updatedAt":"2026-09-08T00:00:40.696Z","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/27612/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 CloudJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27612/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/27612/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27612/v1/model.glb\" alt=\"Cloud Jelly Character at Rest (Jelly Friends Playroom)\" 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/27612/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/27612/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27613","slug":"jelly-friends-playroom-jelly-cloud-squashed-840372dd","title":"Cloud Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cloud, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear white blue squishy body with a ring of soft scallops around the crown, game asset for a cute slime mascot.","description":"Cloud is a squishy translucent jelly stress-ball character in clear white blue, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a ring of soft scallops around the crown. Dimensions 0.40 x 0.18 x 0.40 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The scalloped crown is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cloud-squashed-840372dd","cdnUrl":"https://cdn.3dassets.dev/assets/27613/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cloud-squashed-840372dd","thumbnailUrl":"https://cdn.3dassets.dev/assets/27613/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27613/v1/poster.webp","blurhash":"UPF?2~oK00oKt7j[V@f600bb~qWBM{WCtRof","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":405568,"triangles":11408,"vertices":22774,"meshes":9,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.19781704368237177,0.00000790631365076011,-0.19869022071361542],"max":[0.19781704368237177,0.18204956654306098,0.19967649265553955]},"sizeMeters":[0.396,0.182,0.398],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:40.648Z","updatedAt":"2026-09-08T00:00:40.776Z","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/27613/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 CloudJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27613/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/27613/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27613/v1/model.glb\" alt=\"Cloud Jelly Character Squashed (Jelly Friends Playroom)\" 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/27613/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/27613/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27614","slug":"jelly-friends-playroom-jelly-cloud-stretched-55db893d","title":"Cloud Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cloud, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear white blue squishy body with a ring of soft scallops around the crown, game asset for a cute slime mascot.","description":"Cloud is a squishy translucent jelly stress-ball character in clear white blue, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a ring of soft scallops around the crown. Dimensions 0.20 x 0.39 x 0.19 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The scalloped crown is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cloud-stretched-55db893d","cdnUrl":"https://cdn.3dassets.dev/assets/27614/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cloud-stretched-55db893d","thumbnailUrl":"https://cdn.3dassets.dev/assets/27614/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27614/v1/poster.webp","blurhash":"UIF~mut700NG.8oeIUWB00ay~qWBRjbHofjs","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":405628,"triangles":11408,"vertices":22778,"meshes":9,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.10275367647409439,0,-0.09393080781401614],"max":[0.10197905451059341,0.3936600089073181,0.09393080781401614]},"sizeMeters":[0.205,0.394,0.188],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:41.565Z","updatedAt":"2026-09-08T00:00:41.661Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27614/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 CloudJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27614/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/27614/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27614/v1/model.glb\" alt=\"Cloud Jelly Character Stretched (Jelly Friends Playroom)\" 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/27614/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/27614/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27615","slug":"jelly-friends-playroom-jelly-cloud-pulled-apart-24325575","title":"Cloud Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cloud, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear white blue squishy body with a ring of soft scallops around the crown, game asset for a cute slime mascot.","description":"Cloud is a squishy translucent jelly stress-ball character in clear white blue, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a ring of soft scallops around the crown. Dimensions 0.24 x 0.23 x 0.35 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The scalloped crown is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cloud-pulled-apart-24325575","cdnUrl":"https://cdn.3dassets.dev/assets/27615/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cloud-pulled-apart-24325575","thumbnailUrl":"https://cdn.3dassets.dev/assets/27615/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27615/v1/poster.webp","blurhash":"UJIrKd%M00jct8M{j?%M00WU~qM|D%s;j?Rj","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":646444,"triangles":17548,"vertices":35436,"meshes":11,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.11931997537612915,0,-0.17611893303368892],"max":[0.11931997537612915,0.22988367398612053,0.17783559349125333]},"sizeMeters":[0.239,0.23,0.354],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:42.122Z","updatedAt":"2026-09-08T00:00:42.227Z","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/27615/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 CloudJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27615/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/27615/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27615/v1/model.glb\" alt=\"Cloud Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27615/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/27615/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27616","slug":"jelly-friends-playroom-jelly-ember-b0bd440f","title":"Ember Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Ember, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear coral orange squishy body with a drawn-out flame tip and a wide grin, game asset for a cute slime mascot.","description":"Ember is a squishy translucent jelly stress-ball character in clear coral orange, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a drawn-out flame tip and a wide grin. Dimensions 0.28 x 0.32 x 0.26 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The flame tip is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-ember-b0bd440f","cdnUrl":"https://cdn.3dassets.dev/assets/27616/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-ember-b0bd440f","thumbnailUrl":"https://cdn.3dassets.dev/assets/27616/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27616/v1/poster.webp","blurhash":"UNFN^%t602WBRko1s.WV02WB}?j[o1W;ofs.","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":310680,"triangles":8792,"vertices":17870,"meshes":8,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.14200331018347728,0,-0.12779480783427918],"max":[0.14200331018347728,0.3149999976158142,0.13035113608767185]},"sizeMeters":[0.284,0.315,0.258],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:43.313Z","updatedAt":"2026-09-08T00:00:43.411Z","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/27616/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 EmberJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27616/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/27616/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27616/v1/model.glb\" alt=\"Ember Jelly Character at Rest (Jelly Friends Playroom)\" 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/27616/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/27616/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27617","slug":"jelly-friends-playroom-jelly-ember-squashed-ab2bea9e","title":"Ember Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Ember, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear coral orange squishy body with a drawn-out flame tip and a wide grin, game asset for a cute slime mascot.","description":"Ember is a squishy translucent jelly stress-ball character in clear coral orange, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a drawn-out flame tip and a wide grin. Dimensions 0.36 x 0.18 x 0.35 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The flame tip is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-ember-squashed-ab2bea9e","cdnUrl":"https://cdn.3dassets.dev/assets/27617/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-ember-squashed-ab2bea9e","thumbnailUrl":"https://cdn.3dassets.dev/assets/27617/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27617/v1/poster.webp","blurhash":"UNE-%9t70Nn~V[jZj]a#02WB}?WXt6bFjYoJ","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":310716,"triangles":8792,"vertices":17872,"meshes":8,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.1789197325706482,-0.00001216162202247184,-0.1739180395552756],"max":[0.1789197325706482,0.18151216436383613,0.1779090493333552]},"sizeMeters":[0.358,0.182,0.352],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:43.355Z","updatedAt":"2026-09-08T00:00:43.470Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27617/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 EmberJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27617/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/27617/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27617/v1/model.glb\" alt=\"Ember Jelly Character Squashed (Jelly Friends Playroom)\" 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/27617/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/27617/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27618","slug":"jelly-friends-playroom-jelly-ember-stretched-23a80b57","title":"Ember Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Ember, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear coral orange squishy body with a drawn-out flame tip and a wide grin, game asset for a cute slime mascot.","description":"Ember is a squishy translucent jelly stress-ball character in clear coral orange, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a drawn-out flame tip and a wide grin. Dimensions 0.18 x 0.46 x 0.16 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The flame tip is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-ember-stretched-23a80b57","cdnUrl":"https://cdn.3dassets.dev/assets/27618/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-ember-stretched-23a80b57","thumbnailUrl":"https://cdn.3dassets.dev/assets/27618/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27618/v1/poster.webp","blurhash":"UHD*;3t601M|bHj[afaf0gay}?bIWUWVoMs.","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":310788,"triangles":8792,"vertices":17876,"meshes":8,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.09036931008074134,0,-0.08133874859095937],"max":[0.09036931008074134,0.46380001306533813,0.08195520569177137]},"sizeMeters":[0.181,0.464,0.163],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:43.267Z","updatedAt":"2026-09-08T00:00:43.372Z","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/27618/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 EmberJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27618/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/27618/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27618/v1/model.glb\" alt=\"Ember Jelly Character Stretched (Jelly Friends Playroom)\" 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/27618/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/27618/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27619","slug":"jelly-friends-playroom-jelly-ember-pulled-apart-792c7281","title":"Ember Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Ember, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear coral orange squishy body with a drawn-out flame tip and a wide grin, game asset for a cute slime mascot.","description":"Ember is a squishy translucent jelly stress-ball character in clear coral orange, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus a drawn-out flame tip and a wide grin. Dimensions 0.22 x 0.28 x 0.34 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. The flame tip is modelled into the body and does not move on its own. Rigid node-transform clips: bob. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-ember-pulled-apart-792c7281","cdnUrl":"https://cdn.3dassets.dev/assets/27619/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-ember-pulled-apart-792c7281","thumbnailUrl":"https://cdn.3dassets.dev/assets/27619/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27619/v1/poster.webp","blurhash":"UKHAhAog03xWE2M|t5%102a{}?NH$%xaogNH","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":586536,"triangles":15828,"vertices":32382,"meshes":10,"materials":3,"textures":0,"animations":["bob"],"boundingBox":{"min":[-0.10792777310882565,0,-0.16663203859266829],"max":[0.10792777310882565,0.2766000032424927,0.1714165910642337]},"sizeMeters":[0.216,0.277,0.338],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:43.834Z","updatedAt":"2026-09-08T00:00:43.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/27619/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 EmberJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27619/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/27619/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27619/v1/model.glb\" alt=\"Ember Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27619/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/27619/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27620","slug":"jelly-friends-playroom-jelly-kelp-a6fc00f2","title":"Kelp Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Kelp, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear teal squishy body with long fins along both sides, game asset for a cute slime mascot.","description":"Kelp is a squishy translucent jelly stress-ball character in clear teal, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus long fins along both sides. Dimensions 0.49 x 0.27 x 0.21 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both side fins are their own nodes on pivots where they leave the body. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-kelp-a6fc00f2","cdnUrl":"https://cdn.3dassets.dev/assets/27620/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-kelp-a6fc00f2","thumbnailUrl":"https://cdn.3dassets.dev/assets/27620/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27620/v1/poster.webp","blurhash":"UI7fuit7D4RjpIkWaKaK8wf+*Je.Q-VYo|kq","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":356756,"triangles":10248,"vertices":20548,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.24718519092537622,0,-0.10719541584175347],"max":[0.24718519092537622,0.2720000147819519,0.10732386519836089]},"sizeMeters":[0.494,0.272,0.215],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:44.965Z","updatedAt":"2026-09-08T00:00:45.078Z","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/27620/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 KelpJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27620/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/27620/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27620/v1/model.glb\" alt=\"Kelp Jelly Character at Rest (Jelly Friends Playroom)\" 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/27620/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/27620/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27622","slug":"jelly-friends-playroom-jelly-kelp-squashed-786b3d76","title":"Kelp Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Kelp, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear teal squishy body with long fins along both sides, game asset for a cute slime mascot.","description":"Kelp is a squishy translucent jelly stress-ball character in clear teal, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus long fins along both sides. Dimensions 0.55 x 0.16 x 0.29 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both side fins are their own nodes on pivots where they leave the body. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-kelp-squashed-786b3d76","cdnUrl":"https://cdn.3dassets.dev/assets/27622/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-kelp-squashed-786b3d76","thumbnailUrl":"https://cdn.3dassets.dev/assets/27622/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27622/v1/poster.webp","blurhash":"UH73F3tRD4V?o}ozaeaK8wWB*Jj[R5VskWoz","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":356828,"triangles":10248,"vertices":20552,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.2771224019547037,-0.000003923904764085995,-0.14587919258878895],"max":[0.2771224019547037,0.163203929793703,0.14687423541572098]},"sizeMeters":[0.554,0.163,0.293],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:45.162Z","updatedAt":"2026-09-08T00:00:45.306Z","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/27622/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 KelpJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27622/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/27622/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27622/v1/model.glb\" alt=\"Kelp Jelly Character Squashed (Jelly Friends Playroom)\" 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/27622/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/27622/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27621","slug":"jelly-friends-playroom-jelly-kelp-stretched-e876a288","title":"Kelp Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Kelp, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear teal squishy body with long fins along both sides, game asset for a cute slime mascot.","description":"Kelp is a squishy translucent jelly stress-ball character in clear teal, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus long fins along both sides. Dimensions 0.40 x 0.44 x 0.14 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both side fins are their own nodes on pivots where they leave the body. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-kelp-stretched-e876a288","cdnUrl":"https://cdn.3dassets.dev/assets/27621/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-kelp-stretched-e876a288","thumbnailUrl":"https://cdn.3dassets.dev/assets/27621/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27621/v1/poster.webp","blurhash":"UE6,F_t74TR5x]ofM{WBHXW;y?n$RPV@kWo}","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":356844,"triangles":10248,"vertices":20550,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.19851966520100006,0,-0.06861676725670893],"max":[0.19851966520100006,0.44064000248908997,0.06861676725670893]},"sizeMeters":[0.397,0.441,0.137],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:45.056Z","updatedAt":"2026-09-08T00:00:45.150Z","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/27621/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 KelpJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27621/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/27621/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27621/v1/model.glb\" alt=\"Kelp Jelly Character Stretched (Jelly Friends Playroom)\" 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/27621/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/27621/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27623","slug":"jelly-friends-playroom-jelly-kelp-pulled-apart-4ae6cdc9","title":"Kelp Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Kelp, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear teal squishy body with long fins along both sides, game asset for a cute slime mascot.","description":"Kelp is a squishy translucent jelly stress-ball character in clear teal, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus long fins along both sides. Dimensions 0.44 x 0.23 x 0.31 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both side fins are their own nodes on pivots where they leave the body. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-kelp-pulled-apart-4ae6cdc9","cdnUrl":"https://cdn.3dassets.dev/assets/27623/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-kelp-pulled-apart-4ae6cdc9","thumbnailUrl":"https://cdn.3dassets.dev/assets/27623/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27623/v1/poster.webp","blurhash":"UG7D8upID4j@pIayadtR8wVs*JjaQmjFkCR5","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":597780,"triangles":16388,"vertices":33214,"meshes":12,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.21950786539430928,0,-0.15588782611686025],"max":[0.21950786539430928,0.2284799963235855,0.15769445386475034]},"sizeMeters":[0.439,0.228,0.314],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:45.452Z","updatedAt":"2026-09-08T00:00:45.571Z","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/27623/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 KelpJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27623/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/27623/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27623/v1/model.glb\" alt=\"Kelp Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27623/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/27623/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27624","slug":"jelly-friends-playroom-jelly-cocoa-90dbb0a8","title":"Cocoa Jelly Character at Rest (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cocoa, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Translucent clear cocoa brown squishy body with two rounded bear ears, game asset for a cute slime mascot.","description":"Cocoa is a squishy translucent jelly stress-ball character in clear cocoa brown, sitting at rest, settled on its own weight with a soft flat contact patch on the floor. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two rounded bear ears. Dimensions 0.31 x 0.30 x 0.29 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both bear ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cocoa-90dbb0a8","cdnUrl":"https://cdn.3dassets.dev/assets/27624/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cocoa-90dbb0a8","thumbnailUrl":"https://cdn.3dassets.dev/assets/27624/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27624/v1/poster.webp","blurhash":"UBD96S-:00IVt3oIRnNJ00M|~ARkRjoyxajb","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":337488,"triangles":10248,"vertices":20546,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.1559963822364807,0.0000053278067948941965,-0.14664621607197229],"max":[0.1559963822364807,0.29740042694409274,0.14664621607197229]},"sizeMeters":[0.312,0.297,0.293],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:46.653Z","updatedAt":"2026-09-08T00:00:46.745Z","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/27624/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 CocoaJellyCharacterAtRestJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27624/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/27624/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27624/v1/model.glb\" alt=\"Cocoa Jelly Character at Rest (Jelly Friends Playroom)\" 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/27624/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/27624/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27625","slug":"jelly-friends-playroom-jelly-cocoa-squashed-acbe93fc","title":"Cocoa Jelly Character Squashed (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cocoa, pressed flat and wide under a palm, with the face stretched wider across the front. Translucent clear cocoa brown squishy body with two rounded bear ears, game asset for a cute slime mascot.","description":"Cocoa is a squishy translucent jelly stress-ball character in clear cocoa brown, pressed flat and wide under a palm, with the face stretched wider across the front. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two rounded bear ears. Dimensions 0.39 x 0.21 x 0.40 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both bear ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cocoa-squashed-acbe93fc","cdnUrl":"https://cdn.3dassets.dev/assets/27625/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cocoa-squashed-acbe93fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/27625/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27625/v1/poster.webp","blurhash":"UCByjR$+02NGM{oLt6R+00Rj~Aof%2WBRks:","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":318184,"triangles":10248,"vertices":20552,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.19655133113999476,0.000008751110397997586,-0.19954755902290344],"max":[0.19655133113999476,0.20884042517012602,0.20054188101827075]},"sizeMeters":[0.393,0.209,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":1,"publishedAt":"2026-09-08T00:00:46.702Z","updatedAt":"2026-09-08T02:08:37.772Z","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/27625/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 CocoaJellyCharacterSquashedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27625/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/27625/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27625/v1/model.glb\" alt=\"Cocoa Jelly Character Squashed (Jelly Friends Playroom)\" 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/27625/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/27625/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27626","slug":"jelly-friends-playroom-jelly-cocoa-stretched-a5e3b8b9","title":"Cocoa Jelly Character Stretched (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cocoa, pulled tall and narrow with a pinched waist, the face drawn in with it. Translucent clear cocoa brown squishy body with two rounded bear ears, game asset for a cute slime mascot.","description":"Cocoa is a squishy translucent jelly stress-ball character in clear cocoa brown, pulled tall and narrow with a pinched waist, the face drawn in with it. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two rounded bear ears. Dimensions 0.20 x 0.43 x 0.19 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both bear ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cocoa-stretched-a5e3b8b9","cdnUrl":"https://cdn.3dassets.dev/assets/27626/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cocoa-stretched-a5e3b8b9","thumbnailUrl":"https://cdn.3dassets.dev/assets/27626/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27626/v1/poster.webp","blurhash":"U7ByjQ%200D*-oW;IVn%02R%~AxaNHf6s:kB","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":318228,"triangles":10248,"vertices":20555,"meshes":10,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.10086142462006487,0,-0.09479854988557766],"max":[0.10086142462006487,0.4346684249372954,0.09479854988557766]},"sizeMeters":[0.202,0.435,0.19],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":1,"publishedAt":"2026-09-08T00:00:46.871Z","updatedAt":"2026-09-08T02:08:35.658Z","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/27626/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 CocoaJellyCharacterStretchedJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27626/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/27626/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27626/v1/model.glb\" alt=\"Cocoa Jelly Character Stretched (Jelly Friends Playroom)\" 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/27626/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/27626/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27627","slug":"jelly-friends-playroom-jelly-cocoa-pulled-apart-51e5d19e","title":"Cocoa Jelly Character Pulled Apart (Jelly Friends Playroom)","summary":"Free 3D jelly character stress ball, Cocoa, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Translucent clear cocoa brown squishy body with two rounded bear ears, game asset for a cute slime mascot.","description":"Cocoa is a squishy translucent jelly stress-ball character in clear cocoa brown, torn into two halves 0.2 m apart, joined by tapering strands with droplets fallen between them. Dense smooth body with dark glossy bean eyes, curved brows, a small mouth and pale cheek blushes that read through the jelly, plus two rounded bear ears. Dimensions 0.24 x 0.26 x 0.35 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static posed model, no rig, skeleton or soft-body data; the idle is a rigid bob of the whole body. The four states of this character ship as four separate posed models rather than one deforming mesh, because glTF carries no soft-body data. Both bear ears are their own nodes on pivots at the crown. Rigid node-transform clips: bob and tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-jelly-cocoa-pulled-apart-51e5d19e","cdnUrl":"https://cdn.3dassets.dev/assets/27627/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-jelly-cocoa-pulled-apart-51e5d19e","thumbnailUrl":"https://cdn.3dassets.dev/assets/27627/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27627/v1/poster.webp","blurhash":"U9E2d*^j00WBM{Ios:%100NG~ANGRkxuxuR+","category":{"slug":"characters","title":"Characters & Creatures"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"animated","title":"Animated"},{"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":559076,"triangles":16388,"vertices":33214,"meshes":12,"materials":3,"textures":0,"animations":["bob","tilt"],"boundingBox":{"min":[-0.11855997890233994,0,-0.17645678641695509],"max":[0.11855997890233994,0.2619764319222147,0.17840418810051062]},"sizeMeters":[0.237,0.262,0.355],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":1,"publishedAt":"2026-09-08T00:00:47.096Z","updatedAt":"2026-09-08T02:08:33.504Z","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/27627/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 CocoaJellyCharacterPulledApartJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27627/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/27627/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27627/v1/model.glb\" alt=\"Cocoa Jelly Character Pulled Apart (Jelly Friends Playroom)\" 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/27627/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/27627/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27628","slug":"jelly-friends-playroom-floor-tile-oak-2m-7d60efa9","title":"Pale Oak Floor Tile 2 m (Jelly Friends Playroom)","summary":"Free 3D modular oak floor tile, 2 m square, six chamfered boards over a darker sub-floor. Game asset for a playroom or nursery, tiles edge to edge on a 2 m grid.","description":"A 2 m square pale oak floor tile: six chamfered oak boards laid proud of a darker sub-floor slab, so the open joints between them read as fine dark lines. Dimensions 2.00 x 0.04 x 2.00 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Modular piece on the 2 m playroom grid with named edge ports; repeat it to lay a floor or close a wall. Ports sit at the middle of each edge at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-floor-tile-oak-2m-7d60efa9","cdnUrl":"https://cdn.3dassets.dev/assets/27628/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-floor-tile-oak-2m-7d60efa9","thumbnailUrl":"https://cdn.3dassets.dev/assets/27628/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27628/v1/poster.webp","blurhash":"UAD+-x%L00af%MbHRjf600Ip~pWU9Gn%t8ay","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":8268,"triangles":448,"vertices":994,"meshes":7,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1,0.000060152250398091966,-1],"max":[1,0.04197631769858192,1]},"sizeMeters":[2,0.042,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:48.319Z","updatedAt":"2026-09-08T00:00:48.431Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27628/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaleOakFloorTile2MJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27628/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27628/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27628/v1/model.glb\" alt=\"Pale Oak Floor Tile 2 m (Jelly Friends Playroom)\" 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/27628/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/27628/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27629","slug":"jelly-friends-playroom-wall-bay-oak-2m-fedff54f","title":"Cream Playroom Wall Bay 2 m (Jelly Friends Playroom)","summary":"Free 3D modular wall bay, 2 m wide and 2.6 m tall, cream plaster with an oak dado rail. Game asset that tiles along X to close a room.","description":"A 2 m wide, 2.6 m tall cream plaster wall bay with a chamfered oak dado rail and a slim picture rail near the ceiling. The finished face is +Z. Dimensions 2.00 x 2.60 x 0.12 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Modular piece on the 2 m playroom grid with named edge ports; repeat it to lay a floor or close a wall. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-wall-bay-oak-2m-fedff54f","cdnUrl":"https://cdn.3dassets.dev/assets/27629/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-wall-bay-oak-2m-fedff54f","thumbnailUrl":"https://cdn.3dassets.dev/assets/27629/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27629/v1/poster.webp","blurhash":"U9HC1P~q009F?b^+Rk0000IU~pxut7%MWBD%","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":10328,"triangles":192,"vertices":431,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.0000640521877675,0,-0.05998931646456871],"max":[1.0000640521877675,2.5999999046325684,0.06201898306517248]},"sizeMeters":[2,2.6,0.122],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:48.333Z","updatedAt":"2026-09-08T00:00:48.443Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27629/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CreamPlayroomWallBay2MJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27629/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27629/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27629/v1/model.glb\" alt=\"Cream Playroom Wall Bay 2 m (Jelly Friends Playroom)\" 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/27629/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/27629/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27630","slug":"jelly-friends-playroom-wall-window-bay-2m-3f16aff9","title":"Tall Playroom Window Wall Bay 2 m (Jelly Friends Playroom)","summary":"Free 3D modular window wall bay, 2 m wide and 2.6 m tall, with an oak frame, mullions and a deep sill. Game asset that tiles with the plain bay to close a room.","description":"A 2 m wide, 2.6 m tall wall bay with a tall six-light window: an oak frame, one vertical and two horizontal mullions and a deep sill standing in a 1.16 by 1.38 m opening. The glazing is left out so the opening reads as daylight from whatever the scene puts behind it. Dimensions 2.00 x 2.60 x 0.17 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Modular piece on the 2 m playroom grid with named edge ports; repeat it to lay a floor or close a wall. No glass, light source or lightmap is included. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-wall-window-bay-2m-3f16aff9","cdnUrl":"https://cdn.3dassets.dev/assets/27630/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-wall-window-bay-2m-3f16aff9","thumbnailUrl":"https://cdn.3dassets.dev/assets/27630/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27630/v1/poster.webp","blurhash":"U4F=?hIU00tR?H^+D*0000xu~UM_?c?bD$00","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"interior","title":"Interior"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24116,"triangles":832,"vertices":1861,"meshes":13,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.0000091283412043,-0.00002684198322411291,-0.06005035531711798],"max":[1.0000091283412043,2.6000380527694134,0.11199023758939516]},"sizeMeters":[2,2.6,0.172],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:48.501Z","updatedAt":"2026-09-08T00:00:48.592Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27630/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TallPlayroomWindowWallBay2MJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27630/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27630/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27630/v1/model.glb\" alt=\"Tall Playroom Window Wall Bay 2 m (Jelly Friends Playroom)\" 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/27630/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/27630/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27631","slug":"jelly-friends-playroom-skirting-corner-9f925912","title":"Oak Skirting Corner Trim (Jelly Friends Playroom)","summary":"Free 3D oak skirting board corner, two 0.62 m legs at a right angle with a moulded top edge. Game asset trim that stands proud of a wall bay.","description":"An oak skirting corner: two 0.62 m legs meeting at a right angle, 0.1 m tall, with a moulded top edge that stands proud of the wall face so nothing shares a plane with it. Dimensions 0.62 x 0.11 x 0.62 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-skirting-corner-9f925912","cdnUrl":"https://cdn.3dassets.dev/assets/27631/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-skirting-corner-9f925912","thumbnailUrl":"https://cdn.3dassets.dev/assets/27631/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27631/v1/poster.webp","blurhash":"UFB:Z{WCIVxu~Wj[E1j[00oyIoM{00bH-:Rj","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"slug":"interior","title":"Interior"},{"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":11296,"triangles":256,"vertices":531,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[0,0.000008514255629067657,0],"max":[0.6200000047683716,0.11399148580397558,0.6200000047683716]},"sizeMeters":[0.62,0.114,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:48.696Z","updatedAt":"2026-09-08T00:00:48.793Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27631/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OakSkirtingCornerTrimJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27631/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27631/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27631/v1/model.glb\" alt=\"Oak Skirting Corner Trim (Jelly Friends Playroom)\" 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/27631/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/27631/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27633","slug":"jelly-friends-playroom-rug-round-c41ed406","title":"Round Sage Playroom Rug (Jelly Friends Playroom)","summary":"Free 3D round wool rug, 1.7 m across, sage and cream rings with a soft rolled edge. Game asset for a playroom, nursery or living room floor.","description":"A round wool rug 1.7 m across in sage and cream rings, each ring proud of the one under it so the pile reads and no two faces share a plane with the floor. Dimensions 1.70 x 0.03 x 1.70 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-rug-round-c41ed406","cdnUrl":"https://cdn.3dassets.dev/assets/27633/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-rug-round-c41ed406","thumbnailUrl":"https://cdn.3dassets.dev/assets/27633/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27633/v1/poster.webp","blurhash":"UEBzUit700WBo{j?WBa}00Rj~qj[R7a#ozjs","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":47176,"triangles":1296,"vertices":2463,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.8500000238418579,0.00001025437505721219,-0.8500000238418579],"max":[0.8500000238418579,0.03201208675701891,0.8500000238418579]},"sizeMeters":[1.7,0.032,1.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:50.015Z","updatedAt":"2026-09-08T00:00:50.133Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27633/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoundSagePlayroomRugJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27633/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27633/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27633/v1/model.glb\" alt=\"Round Sage Playroom Rug (Jelly Friends Playroom)\" 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/27633/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/27633/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27632","slug":"jelly-friends-playroom-floor-cushion-square-02d82853","title":"Square Floor Cushion Dusty Blue (Jelly Friends Playroom)","summary":"Free 3D square floor cushion, 0.5 m, crowned and piped in dusty blue with a linen button. Game asset for a playroom, reading corner or nursery.","description":"A 0.5 m square floor cushion in dusty blue with a crowned top, a linen welt seam round the middle and a covered button at the centre. Dimensions 0.52 x 0.19 x 0.52 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-floor-cushion-square-02d82853","cdnUrl":"https://cdn.3dassets.dev/assets/27632/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-floor-cushion-square-02d82853","thumbnailUrl":"https://cdn.3dassets.dev/assets/27632/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27632/v1/poster.webp","blurhash":"U9DmEu?b00M{.8aeIVkV00D%~qkB4nozxuRP","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":40632,"triangles":956,"vertices":2008,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2574999928474426,-0.0000035798485621685305,-0.2574999928474426],"max":[0.2574999928474426,0.18800109744442137,0.2574999928474426]},"sizeMeters":[0.515,0.188,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:50.002Z","updatedAt":"2026-09-08T00:00:50.118Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27632/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SquareFloorCushionDustyBlueJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27632/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27632/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27632/v1/model.glb\" alt=\"Square Floor Cushion Dusty Blue (Jelly Friends Playroom)\" 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/27632/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/27632/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27634","slug":"jelly-friends-playroom-floor-cushion-square-clay-3f01aa54","title":"Square Floor Cushion Clay (Jelly Friends Playroom)","summary":"Free 3D square floor cushion, 0.5 m, crowned and piped in warm clay. Colour variant of the dusty blue cushion for a playroom or nursery.","description":"A 0.5 m square floor cushion in warm clay with a crowned top, a linen welt seam round the middle and a covered button at the centre. Dimensions 0.52 x 0.19 x 0.52 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-floor-cushion-square-clay-3f01aa54","cdnUrl":"https://cdn.3dassets.dev/assets/27634/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-floor-cushion-square-clay-3f01aa54","thumbnailUrl":"https://cdn.3dassets.dev/assets/27634/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27634/v1/poster.webp","blurhash":"U9E.R%?H00M{?HWDM{of00E1~VkC4.s.xuNG","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":40660,"triangles":956,"vertices":2008,"meshes":3,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2574999928474426,-0.0000035798485621685305,-0.2574999928474426],"max":[0.2574999928474426,0.18800109744442137,0.2574999928474426]},"sizeMeters":[0.515,0.188,0.515],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:50.203Z","updatedAt":"2026-09-08T00:00:50.312Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27634/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SquareFloorCushionClayJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27634/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27634/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27634/v1/model.glb\" alt=\"Square Floor Cushion Clay (Jelly Friends Playroom)\" 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/27634/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/27634/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27635","slug":"jelly-friends-playroom-blanket-folded-82b9f264","title":"Folded Blanket Stack (Jelly Friends Playroom)","summary":"Free 3D folded blanket, three soft layers 0.5 m wide in linen and sage with a stitched loop. Game asset for a playroom, nursery or bedroom.","description":"A folded blanket in three soft layers, 0.5 m wide and 0.13 m tall, alternating linen and sage with a small stitched hanging loop on the front edge. Dimensions 0.50 x 0.13 x 0.35 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-blanket-folded-82b9f264","cdnUrl":"https://cdn.3dassets.dev/assets/27635/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-blanket-folded-82b9f264","thumbnailUrl":"https://cdn.3dassets.dev/assets/27635/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27635/v1/poster.webp","blurhash":"U9F$Y4-;00V[?b-;RjMy00M_~qNG0K9Fn,oy","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":40916,"triangles":1120,"vertices":2150,"meshes":4,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2515000104904175,0.00001765341799037784,-0.17151461026089876],"max":[0.2515000104904175,0.13299508641201405,0.17399871608139333]},"sizeMeters":[0.503,0.133,0.346],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:50.581Z","updatedAt":"2026-09-08T00:00:50.683Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27635/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FoldedBlanketStackJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27635/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27635/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27635/v1/model.glb\" alt=\"Folded Blanket Stack (Jelly Friends Playroom)\" 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/27635/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/27635/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27636","slug":"jelly-friends-playroom-swing-a-frame-9edc58fb","title":"Wooden A-Frame Swing with Slatted Seat (Jelly Friends Playroom)","summary":"Free 3D indoor A-frame swing, 1.85 m tall, with a slatted oak seat on two ropes. Game asset for a playroom or garden, with a rocking seat clip.","description":"A wooden A-frame swing 1.85 m tall and 1.66 m across the feet, with a slatted oak seat 0.58 m wide hanging on two ropes from the cross beam at a seat height of 0.5 m. Dimensions 1.66 x 1.85 x 0.86 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. The seat and both ropes are one node pivoted on the cross beam, so a single rigid rotation swings the whole hanger; the frame is static. No rig, collision or navigation data. Rigid node-transform clips: tilt. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-swing-a-frame-9edc58fb","cdnUrl":"https://cdn.3dassets.dev/assets/27636/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-swing-a-frame-9edc58fb","thumbnailUrl":"https://cdn.3dassets.dev/assets/27636/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27636/v1/poster.webp","blurhash":"U5C~|@?b00s.jX?a0L00009Z_3Nes8Rj~p?a","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":16416,"triangles":396,"vertices":892,"meshes":11,"materials":3,"textures":0,"animations":["tilt"],"boundingBox":{"min":[-0.8289975030937473,0,-0.4282684340229965],"max":[0.8289975030937473,1.8541865032520388,0.4282684340229965]},"sizeMeters":[1.658,1.854,0.857],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:51.616Z","updatedAt":"2026-09-08T00:00:51.708Z","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/27636/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 WoodenAFrameSwingWithSlattedSeatJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27636/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/27636/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27636/v1/model.glb\" alt=\"Wooden A-Frame Swing with Slatted Seat (Jelly Friends Playroom)\" 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/27636/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/27636/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27637","slug":"jelly-friends-playroom-trampoline-round-3a0fac51","title":"Small Round Trampoline with Padded Rim (Jelly Friends Playroom)","summary":"Free 3D small round trampoline, 1.02 m across and 0.26 m tall, with a padded clay rim, 24 springs and a dipped mat. Game asset for a playroom.","description":"A small round trampoline 1.02 m across and 0.26 m tall: six splayed steel legs, a steel hoop, 24 modelled springs, a padded clay rim sitting proud of the hoop and a linen mat that dips in the middle. Dimensions 1.02 x 0.26 x 1.02 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data; the mat does not deform.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-trampoline-round-3a0fac51","cdnUrl":"https://cdn.3dassets.dev/assets/27637/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-trampoline-round-3a0fac51","thumbnailUrl":"https://cdn.3dassets.dev/assets/27637/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27637/v1/poster.webp","blurhash":"UDCZCTxt00WA^+j[IUj[00Rj~qof00WC-;WB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":255240,"triangles":6504,"vertices":13060,"meshes":33,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5099999904632568,0,-0.5099999904632568],"max":[0.5099999904632568,0.25928857080881934,0.5099999904632568]},"sizeMeters":[1.02,0.259,1.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:51.670Z","updatedAt":"2026-09-08T00:00:51.792Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27637/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SmallRoundTrampolineWithPaddedRimJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27637/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27637/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27637/v1/model.glb\" alt=\"Small Round Trampoline with Padded Rim (Jelly Friends Playroom)\" 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/27637/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/27637/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27638","slug":"jelly-friends-playroom-stacking-rings-toy-877c426b","title":"Wooden Stacking Rings Toy (Jelly Friends Playroom)","summary":"Free 3D wooden stacking rings toy, 0.26 m tall, four painted rings on a turned post with a ball finial. Game asset for a playroom or nursery shelf.","description":"A wooden stacking rings toy 0.26 m tall: a turned post on a dished base with four painted rings in clay, dusty blue, sage and cream and a ball finial on top. Dimensions 0.19 x 0.26 x 0.19 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data; the rings do not lift off.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-stacking-rings-toy-877c426b","cdnUrl":"https://cdn.3dassets.dev/assets/27638/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-stacking-rings-toy-877c426b","thumbnailUrl":"https://cdn.3dassets.dev/assets/27638/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27638/v1/poster.webp","blurhash":"UADJ9Y%f00Dj01Rj?Goz00Rj~qxa?at6jEWV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":127528,"triangles":4720,"vertices":9424,"meshes":7,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.0949999988079071,-0.000003905408431148505,-0.0949999988079071],"max":[0.0949999988079071,0.2639999985694885,0.0949999988079071]},"sizeMeters":[0.19,0.264,0.19],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:51.825Z","updatedAt":"2026-09-08T00:00:51.917Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27638/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WoodenStackingRingsToyJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27638/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27638/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27638/v1/model.glb\" alt=\"Wooden Stacking Rings Toy (Jelly Friends Playroom)\" 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/27638/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/27638/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27639","slug":"jelly-friends-playroom-wooden-ball-9daa23cf","title":"Painted Wooden Play Ball (Jelly Friends Playroom)","summary":"Free 3D wooden play ball, 0.13 m across, with a painted sage band standing proud of the grain. Game asset for a playroom, nursery or toy shelf.","description":"A turned wooden play ball 0.13 m across with a painted sage band running round it, modelled proud of the ball so the two never share a surface. Dimensions 0.13 x 0.14 x 0.14 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-wooden-ball-9daa23cf","cdnUrl":"https://cdn.3dassets.dev/assets/27639/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-wooden-ball-9daa23cf","thumbnailUrl":"https://cdn.3dassets.dev/assets/27639/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27639/v1/poster.webp","blurhash":"UFDvTH%M00IU?bkBD*j]00M{~VtR9GWB%Mfk","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":121340,"triangles":3176,"vertices":6266,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.06499999947845936,0,-0.07050000131130219],"max":[0.06499999947845936,0.14100000262260437,0.07050000131130219]},"sizeMeters":[0.13,0.141,0.141],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:52.204Z","updatedAt":"2026-09-08T00:00:52.292Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27639/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaintedWoodenPlayBallJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27639/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27639/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27639/v1/model.glb\" alt=\"Painted Wooden Play Ball (Jelly Friends Playroom)\" 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/27639/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/27639/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27640","slug":"jelly-friends-playroom-shelf-low-oak-5eea0302","title":"Low Oak Shelf with Storage Jars (Jelly Friends Playroom)","summary":"Free 3D low oak shelf, 1.2 m wide and 0.37 m to the top board, with a sage back panel and three lidded jars. Game asset for a playroom, nursery or craft room.","description":"A low oak shelf 1.2 m wide and 0.32 m deep, 0.37 m to the top board and 0.51 m over the tallest jar, with two chamfered boards, a sage back panel and three lidded cream jars standing on top. Dimensions 1.20 x 0.51 x 0.32 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. The jars are modelled into the shelf and do not lift off. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-shelf-low-oak-5eea0302","cdnUrl":"https://cdn.3dassets.dev/assets/27640/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-shelf-low-oak-5eea0302","thumbnailUrl":"https://cdn.3dassets.dev/assets/27640/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27640/v1/poster.webp","blurhash":"UEFO_hj^D%-o-p~pM{IU00ae?HIU4n01%2%M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":70096,"triangles":1856,"vertices":3804,"meshes":11,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.6000000238418579,0,-0.15998413673227066],"max":[0.6000000238418579,0.5059981701718408,0.15998413673227066]},"sizeMeters":[1.2,0.506,0.32],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:53.246Z","updatedAt":"2026-09-08T00:00:53.341Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27640/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LowOakShelfWithStorageJarsJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27640/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27640/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27640/v1/model.glb\" alt=\"Low Oak Shelf with Storage Jars (Jelly Friends Playroom)\" 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/27640/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/27640/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27641","slug":"jelly-friends-playroom-toy-box-oak-edb8374e","title":"Oak Toy Box with Lift Lid (Jelly Friends Playroom)","summary":"Free 3D oak toy box, 0.74 m wide and 0.45 m tall, with a hinged lift lid on a real pivot. Game asset for a playroom, nursery or bedroom.","description":"An oak toy box 0.74 m wide, 0.45 m tall and 0.46 m deep on four corner feet, with a sage front panel and a chamfered lift lid hinged along its back edge. Dimensions 0.74 x 0.45 x 0.46 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. The lid is a single node pivoted on its back edge and carries an open and close pair. Static otherwise, no collision or navigation data. Rigid node-transform clips: open and close. No skinning.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-toy-box-oak-edb8374e","cdnUrl":"https://cdn.3dassets.dev/assets/27641/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-toy-box-oak-edb8374e","thumbnailUrl":"https://cdn.3dassets.dev/assets/27641/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27641/v1/poster.webp","blurhash":"UBHn{J_N00$+E2?H%MIq00IAt7IoXlR-$$Mx","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":21896,"triangles":768,"vertices":1734,"meshes":12,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.3700000047683716,0,-0.23001495591637175],"max":[0.3700000047683716,0.45399743872400644,0.2300149581515459]},"sizeMeters":[0.74,0.454,0.46],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:53.265Z","updatedAt":"2026-09-08T00:00:53.377Z","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/27641/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 OakToyBoxWithLiftLidJellyFriendsPlayroom(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/27641/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/27641/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27641/v1/model.glb\" alt=\"Oak Toy Box with Lift Lid (Jelly Friends Playroom)\" 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/27641/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/27641/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"27642","slug":"jelly-friends-playroom-toy-box-oak-open-d64f865a","title":"Oak Toy Box with the Lid Open (Jelly Friends Playroom)","summary":"Free 3D oak toy box, 0.74 m wide, posed with the lid thrown fully back and upright. Open variant of the lift-lid toy box, game asset for a playroom or nursery.","description":"An oak toy box 0.74 m wide and 0.46 m deep, posed with its lid thrown fully back and upright on the rear hinge, 0.83 m to the top of the raised lid, so the box reads as open and something can sit inside it. Dimensions 0.74 x 0.83 x 0.50 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. The open pose is baked into the geometry, so this variant ships no clip. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-toy-box-oak-open-d64f865a","cdnUrl":"https://cdn.3dassets.dev/assets/27642/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-toy-box-oak-open-d64f865a","thumbnailUrl":"https://cdn.3dassets.dev/assets/27642/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27642/v1/poster.webp","blurhash":"U8HeasNc00?H-:9F9Zo}00IU%LNG%g~psCDi","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":23172,"triangles":768,"vertices":1724,"meshes":12,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.3700000047683716,0,-0.27365809119287376],"max":[0.3700000047683716,0.8292158065322837,0.2229991497306907]},"sizeMeters":[0.74,0.829,0.497],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:53.394Z","updatedAt":"2026-09-08T00:00:53.532Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27642/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function OakToyBoxWithTheLidOpenJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27642/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27642/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27642/v1/model.glb\" alt=\"Oak Toy Box with the Lid Open (Jelly Friends Playroom)\" 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/27642/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/27642/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27643","slug":"jelly-friends-playroom-stool-round-7d4d95de","title":"Small Round Oak Stool (Jelly Friends Playroom)","summary":"Free 3D small round stool, 0.37 m across and 0.32 m tall, turned oak top on three splayed legs. Game asset for a playroom, nursery or kitchen.","description":"A small round oak stool 0.37 m across and 0.32 m tall with a dished turned top, three splayed legs and a stretcher ring. Dimensions 0.35 x 0.32 x 0.38 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-stool-round-7d4d95de","cdnUrl":"https://cdn.3dassets.dev/assets/27643/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-stool-round-7d4d95de","thumbnailUrl":"https://cdn.3dassets.dev/assets/27643/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27643/v1/poster.webp","blurhash":"UNEL{K%L01xa~pt6D*RkE2RkWCWC9ZWU%Lof","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":45368,"triangles":1048,"vertices":2248,"meshes":5,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.17499999701976776,0,-0.1998766887504992],"max":[0.17729975908272058,0.3234930806080008,0.17499999701976776]},"sizeMeters":[0.352,0.323,0.375],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:53.792Z","updatedAt":"2026-09-08T00:00:53.917Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27643/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SmallRoundOakStoolJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27643/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27643/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27643/v1/model.glb\" alt=\"Small Round Oak Stool (Jelly Friends Playroom)\" 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/27643/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/27643/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27644","slug":"jelly-friends-playroom-potted-fern-46bf82a5","title":"Potted Fern in a Clay Pot (Jelly Friends Playroom)","summary":"Free 3D potted fern, 0.43 m tall in a 0.26 m clay pot with nine arching fronds. Game asset for a playroom, living room or nursery corner.","description":"A potted fern 0.43 m tall: a thrown clay pot 0.26 m across with a rolled rim, dark compost and nine arching fronds with leaflets down each stem. Dimensions 0.32 x 0.43 x 0.26 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. Static geometry, no rig, collision or navigation data; the fronds do not sway.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-potted-fern-46bf82a5","cdnUrl":"https://cdn.3dassets.dev/assets/27644/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-potted-fern-46bf82a5","thumbnailUrl":"https://cdn.3dassets.dev/assets/27644/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27644/v1/poster.webp","blurhash":"U8D00}_20001c?S2qwxG00Io~Vxtm9%2TvE1","category":{"slug":"nature","title":"Nature & Landscape"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":387784,"triangles":11544,"vertices":22987,"meshes":11,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.13199999928474426,-0.0000037517446686702316,-0.13199999928474426],"max":[0.18452229872910964,0.4264048635959625,0.13199999928474426]},"sizeMeters":[0.317,0.426,0.264],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":2,"publishedAt":"2026-09-08T00:00:54.841Z","updatedAt":"2026-09-08T13:58:18.401Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27644/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PottedFernInAClayPotJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27644/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27644/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27644/v1/model.glb\" alt=\"Potted Fern in a Clay Pot (Jelly Friends Playroom)\" 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/27644/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/27644/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27645","slug":"jelly-friends-playroom-paper-lantern-lamp-cbe82a73","title":"Paper Lantern Floor Lamp (Jelly Friends Playroom)","summary":"Free 3D paper lantern floor lamp, 1.13 m tall on an oak tripod, with a soft emissive core. Game asset for a playroom, nursery or living room.","description":"A paper lantern floor lamp 1.13 m tall: an oak tripod with a stretcher ring, a cream paper drum 0.35 m across on oak hoops, and a soft emissive core standing clear of the paper. Dimensions 0.36 x 1.13 x 0.38 m (X x Y x Z). Metre units, +Y up, +Z forward, origin on the footprint at floor level. The core uses an emissive material and casts no light on its own; add a light to the scene. Static geometry, no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-paper-lantern-lamp-cbe82a73","cdnUrl":"https://cdn.3dassets.dev/assets/27645/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-paper-lantern-lamp-cbe82a73","thumbnailUrl":"https://cdn.3dassets.dev/assets/27645/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27645/v1/poster.webp","blurhash":"U8BWVq-;0000_NtR4nIBD*WB%Lt7D$WB%gt7","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":120140,"triangles":3312,"vertices":6570,"meshes":9,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.18438490325415918,0,-0.2031535363053827],"max":[0.1750074591526642,1.128893761443536,0.1750074591526642]},"sizeMeters":[0.359,1.129,0.378],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-08T00:00:55.028Z","updatedAt":"2026-09-08T00:00:55.122Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27645/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaperLanternFloorLampJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27645/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27645/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27645/v1/model.glb\" alt=\"Paper Lantern Floor Lamp (Jelly Friends Playroom)\" 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/27645/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/27645/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"27646","slug":"jelly-friends-playroom-afternoon-playroo-c0481e25-starter-scene","title":"Afternoon Playroom (Jelly Friends Playroom)","summary":"A sunlit oak playroom on a 6 by 4 m floor with two walls closed and a tall window behind. Three jelly friends rest together on the sage rug, two lie squashed by the trampoline, two stand stretched up at the swing, one has been pulled into two halves on the floor, one sits on...","description":"A sunlit oak playroom on a 6 by 4 m floor with two walls closed and a tall window behind. Three jelly friends rest together on the sage rug, two lie squashed by the trampoline, two stand stretched up at the swing, one has been pulled into two halves on the floor, one sits on the low shelf and one peeks out of the open toy box. Cushions, a folded blanket, a paper lantern lamp, two ferns, a stool, stacking rings and loose wooden balls furnish the rest.","status":"published","url":"https://3dassets.dev/assets/jelly-friends-playroom-afternoon-playroo-c0481e25-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/27646/v1/model.glb","downloadUrl":"https://3dassets.dev/download/jelly-friends-playroom-afternoon-playroo-c0481e25-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/27646/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/27646/v1/poster.webp","blurhash":"U9IOX-t800%1?w-;M_D*00t8RiD%MvRkRlM{","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"cute","title":"Cute"},{"slug":"stylized","title":"Stylized"},{"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":4321880,"triangles":140228,"vertices":282797,"meshes":230,"materials":20,"textures":0,"animations":[],"boundingBox":{"min":[-3.099989316464569,-0.00002684198322411291,-2.100050355317118],"max":[3.0000640521877675,2.6000380527694134,2.0000640521877675]},"sizeMeters":[6.1,2.6,4.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":2,"publishedAt":"2026-09-08T00:00:56.624Z","updatedAt":"2026-09-08T02:03:42.405Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/27646/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AfternoonPlayroomJellyFriendsPlayroom(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/27646/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/27646/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/27646/v1/model.glb\" alt=\"Afternoon Playroom (Jelly Friends Playroom)\" 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/27646/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/27646/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"jelly-friends-playroom","title":"Jelly friends playroom","url":"https://3dassets.dev/demos/jelly-friends-playroom"}}}