{"data":{"id":"33652","slug":"city-park-and-playground-swing-set-7056310c","title":"Two Bay Swing Set (City Park and Playground)","summary":"A 3.6 m two bay swing frame on 2.4 m painted A-frame legs with a yellow top bar, two rubber sling seats on rigid hanger rods and a brace between each pair of legs. Each seat is one node hung on the bar's own axis, so the clip swings from the bar and not from the seat.","description":"A 3.6 m two bay swing frame on 2.4 m painted A-frame legs with a yellow top bar, two rubber sling seats on rigid hanger rods and a brace between each pair of legs. Each seat is one node hung on the bar's own axis, so the clip swings from the bar and not from the seat. Overall 3.760 x 2.475 x 1.690 m (X x Y x Z), metre units, +Y up, +Z forward, resting on y=0. Named nodes on their own pivots: seat-left, seat-right. City Park and Playground / citypark-lp-v1: faceted turf and paving, timber, galvanised steel and three playground accents, with embedded procedural concrete and timber maps and no custom shaders. Rigid node-transform clips: swing. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/city-park-and-playground-swing-set-7056310c","cdnUrl":"https://cdn.3dassets.dev/assets/33652/v1/model.glb","downloadUrl":"https://3dassets.dev/download/city-park-and-playground-swing-set-7056310c","thumbnailUrl":"https://cdn.3dassets.dev/assets/33652/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/33652/v1/poster.webp","blurhash":"UDAKmvx[5Z%h~S%$D,MxDNxUnMD*9bs5.7It","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"stylized","title":"Stylized"},{"slug":"exterior","title":"Exterior"},{"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":17760,"triangles":356,"vertices":1068,"meshes":6,"materials":4,"textures":0,"animations":["swing"],"boundingBox":{"min":[-1.8799999952316284,0.000059162900631681836,-0.8451580945691726],"max":[1.8799999952316284,2.4749617162875546,0.8451580945691726]},"sizeMeters":[3.76,2.475,1.69],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-11T03:24:44.480Z","updatedAt":"2026-09-11T03:24:44.599Z","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/33652/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 TwoBaySwingSetCityParkAndPlayground(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/33652/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/33652/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/33652/v1/model.glb\" alt=\"Two Bay Swing Set (City Park and Playground)\" 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/33652/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/33652/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}}