{"data":{"id":220,"slug":"abandoned-puppet-theatre-and-prop-vault","title":"Abandoned Puppet Theatre and Prop Vault","summary":"Fifty premium original theatrical craft designs with five distinct puppet mechanisms and a roofed furnished theatre.","description":"Faded burgundy, ochre timber, brass and cream theatre with articulated courier and long-neck bird marionettes, hinged jaw rod puppet, hollow glove puppet and cutwork shadow figure. Supported crosses, connected scenery rails, stocked vault and repair bay beneath a complete framed roof. Static puppets and machinery; no animation, audio or structural certification.","url":"https://3dassets.dev/packs/abandoned-puppet-theatre-and-prop-vault","coverUrl":"https://cdn.3dassets.dev/assets/31107/v1/poster.webp","assetCount":51,"aiGenerated":true,"aiGeneratedAssetCount":51,"aiModels":["GPT-6"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":6900868,"totalTriangles":400228,"starterScene":{"id":"31107","slug":"abandoned-puppet-theatre-and-prop-vault--2f0ce2ea-starter-scene","title":"Quiet Puppet Theatre (Abandoned Puppet Theatre and Prop Vault)","summary":"Intact framed theatre with transparent supported front roof panels, furnished audience facing the raised puppet stage, connected scenery track and sheltered backstage repair and storage.","description":"Intact framed theatre with transparent supported front roof panels, furnished audience facing the raised puppet stage, connected scenery track and sheltered backstage repair and storage.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault--2f0ce2ea-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/31107/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault--2f0ce2ea-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/31107/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31107/v1/poster.webp","blurhash":"U3D9Fu~W01?bRQ-nxtIW009ZMI4UM^ICoiOq","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"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":3278868,"triangles":201764,"vertices":146412,"meshes":162,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-5.5,0.00010254040370000217,-4.500274666585284],"max":[5.5,4.121816275592722,4.500274666585284]},"sizeMeters":[11,4.122,9.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:09.634Z","updatedAt":"2026-09-08T10:44:09.743Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31107/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuietPuppetTheatreAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31107/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31107/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31107/v1/model.glb\" alt=\"Quiet Puppet Theatre (Abandoned Puppet Theatre and Prop Vault)\" 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/31107/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/31107/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"31053","slug":"abandoned-puppet-theatre-and-prop-vault-roofed-puppet--46329281","title":"Roofed Puppet Theatre (Abandoned Puppet Theatre and Prop Vault)","summary":"Intact timber theatre shell with full back and side walls, framed clear audience roof panels and opaque rear vault roof. Broad front entrance bays remain open.","description":"Intact timber theatre shell with full back and side walls, framed clear audience roof panels and opaque rear vault roof. Broad front entrance bays remain open. Dimensions 10.01 × 3.94 × 8.02 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-roofed-puppet--46329281","cdnUrl":"https://cdn.3dassets.dev/assets/31053/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-roofed-puppet--46329281","thumbnailUrl":"https://cdn.3dassets.dev/assets/31053/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31053/v1/poster.webp","blurhash":"U2EVH9]{00%P?1_3SYH?00cFRN00HqDOThGF","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":228312,"triangles":12900,"vertices":9196,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-5.006199836730957,0.0003040745714766313,-4.008516386288197],"max":[5.005000114440918,3.939816273804583,4.007345552497865]},"sizeMeters":[10.011,3.94,8.016],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:46.081Z","updatedAt":"2026-09-08T10:43:46.183Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31053/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RoofedPuppetTheatreAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31053/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31053/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31053/v1/model.glb\" alt=\"Roofed Puppet Theatre (Abandoned Puppet Theatre and Prop Vault)\" 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/31053/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/31053/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31055","slug":"abandoned-puppet-theatre-and-prop-vault-proscenium-arc-f29b5a43","title":"Proscenium Arch (Abandoned Puppet Theatre and Prop Vault)","summary":"Thick carved proscenium with stepped plinths, fluted pilasters, brass fillets and crowned layered lintel; original abstract ornament.","description":"Thick carved proscenium with stepped plinths, fluted pilasters, brass fillets and crowned layered lintel; original abstract ornament. Dimensions 4.95 × 3.63 × 0.48 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-proscenium-arc-f29b5a43","cdnUrl":"https://cdn.3dassets.dev/assets/31055/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-proscenium-arc-f29b5a43","thumbnailUrl":"https://cdn.3dassets.dev/assets/31055/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31055/v1/poster.webp","blurhash":"U9AJG$t5E2%0~T=_E2IqENxZRRIq9vs:-BI;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":112308,"triangles":6500,"vertices":4402,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2.4749999046325684,-0.00003528852183642961,-0.2398937863433649],"max":[2.4761998653411865,3.6251773051909595,0.2398937863433649]},"sizeMeters":[4.951,3.625,0.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:45.224Z","updatedAt":"2026-09-08T10:43:45.335Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31055/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ProsceniumArchAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31055/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31055/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31055/v1/model.glb\" alt=\"Proscenium Arch (Abandoned Puppet Theatre and Prop Vault)\" 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/31055/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/31055/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31056","slug":"abandoned-puppet-theatre-and-prop-vault-raised-puppet--3ae52a70","title":"Raised Puppet Stage (Abandoned Puppet Theatre and Prop Vault)","summary":"Raised planked stage with closed fascia, thick deck and continuous front trim.","description":"Raised planked stage with closed fascia, thick deck and continuous front trim. Dimensions 4.55 × 0.51 × 2.85 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-raised-puppet--3ae52a70","cdnUrl":"https://cdn.3dassets.dev/assets/31056/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-raised-puppet--3ae52a70","thumbnailUrl":"https://cdn.3dassets.dev/assets/31056/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31056/v1/poster.webp","blurhash":"U7BClG%103aL_0%1M|Ip01bY~ANH039vxt%1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":96820,"triangles":5400,"vertices":3850,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2.2750000953674316,0.00004806069196020002,-1.4251122152626696],"max":[2.2750000953674316,0.5049300277162545,1.4251122152626696]},"sizeMeters":[4.55,0.505,2.85],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:46.358Z","updatedAt":"2026-09-08T10:43:46.457Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31056/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RaisedPuppetStageAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31056/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31056/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31056/v1/model.glb\" alt=\"Raised Puppet Stage (Abandoned Puppet Theatre and Prop Vault)\" 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/31056/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/31056/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31057","slug":"abandoned-puppet-theatre-and-prop-vault-backstage-oper-15be4168","title":"Backstage Operator Bridge (Abandoned Puppet Theatre and Prop Vault)","summary":"Supported operator bridge with four legs, thick plank deck and rear safety railing; clear front permits puppet operation.","description":"Supported operator bridge with four legs, thick plank deck and rear safety railing; clear front permits puppet operation. Dimensions 4.50 × 2.75 × 0.80 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-backstage-oper-15be4168","cdnUrl":"https://cdn.3dassets.dev/assets/31057/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-backstage-oper-15be4168","thumbnailUrl":"https://cdn.3dassets.dev/assets/31057/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31057/v1/poster.webp","blurhash":"UABo$?wJRQ$i~A^OD+Iq0Nt5WEE34;Rl-nWE","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":45068,"triangles":2464,"vertices":1764,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2.25,0.00013964602271054893,-0.3999145481734672],"max":[2.25,2.749980504244223,0.3999145481734672]},"sizeMeters":[4.5,2.75,0.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:46.901Z","updatedAt":"2026-09-08T10:43:47.009Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31057/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BackstageOperatorBridgeAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31057/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31057/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31057/v1/model.glb\" alt=\"Backstage Operator Bridge (Abandoned Puppet Theatre and Prop Vault)\" 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/31057/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/31057/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31058","slug":"abandoned-puppet-theatre-and-prop-vault-bridge-access--72681c5d","title":"Bridge Access Stair (Abandoned Puppet Theatre and Prop Vault)","summary":"Seven supported bridge treads with twin stringers, full handrails and closed feet; top deck mates to operator walkway.","description":"Seven supported bridge treads with twin stringers, full handrails and closed feet; top deck mates to operator walkway. Dimensions 0.83 × 2.64 × 2.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-bridge-access--72681c5d","cdnUrl":"https://cdn.3dassets.dev/assets/31058/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-bridge-access--72681c5d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31058/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31058/v1/poster.webp","blurhash":"U7Am3MxZ02IpXk58RQ~A0hWC?FkVM}%0t6I;","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":123240,"triangles":6812,"vertices":5018,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.4149324821298762,-0.000025656984603883437,-1.0422455072402954],"max":[0.4149324821298762,2.64304780960083,1.0422455072402954]},"sizeMeters":[0.83,2.643,2.084],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:47.705Z","updatedAt":"2026-09-08T10:43:47.808Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31058/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BridgeAccessStairAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31058/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31058/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31058/v1/model.glb\" alt=\"Bridge Access Stair (Abandoned Puppet Theatre and Prop Vault)\" 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/31058/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/31058/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31059","slug":"abandoned-puppet-theatre-and-prop-vault-stage-wing-pan-fad76803","title":"Stage Wing Panel (Abandoned Puppet Theatre and Prop Vault)","summary":"Freestanding thick stage masking wing with rear brace, broad foot and framed painted face.","description":"Freestanding thick stage masking wing with rear brace, broad foot and framed painted face. Dimensions 0.96 × 2.30 × 0.65 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-stage-wing-pan-fad76803","cdnUrl":"https://cdn.3dassets.dev/assets/31059/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-stage-wing-pan-fad76803","thumbnailUrl":"https://cdn.3dassets.dev/assets/31059/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31059/v1/poster.webp","blurhash":"U38ffp}Z000{0QwO?WFq?ZofD*VsM+nmxpS]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":24496,"triangles":1264,"vertices":929,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.4799814082939755,0,-0.32505581217187296],"max":[0.4799814082939755,2.3011999130249023,0.32505581217187296]},"sizeMeters":[0.96,2.301,0.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:47.768Z","updatedAt":"2026-09-08T10:43:47.865Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31059/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageWingPanelAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31059/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31059/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31059/v1/model.glb\" alt=\"Stage Wing Panel (Abandoned Puppet Theatre and Prop Vault)\" 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/31059/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/31059/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31060","slug":"abandoned-puppet-theatre-and-prop-vault-rolling-scener-0946dd4f","title":"Rolling Scenery Flat (Abandoned Puppet Theatre and Prop Vault)","summary":"Wheeled framed scenery flat with original abstract skyline relief, thick canvas face and braced rolling undercarriage.","description":"Wheeled framed scenery flat with original abstract skyline relief, thick canvas face and braced rolling undercarriage. Dimensions 1.20 × 1.94 × 0.40 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-rolling-scener-0946dd4f","cdnUrl":"https://cdn.3dassets.dev/assets/31060/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-rolling-scener-0946dd4f","thumbnailUrl":"https://cdn.3dassets.dev/assets/31060/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31060/v1/poster.webp","blurhash":"UCDlyV?b0001_N%MDiDi4nNG?IxbH?oJ%gR-","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":89596,"triangles":4668,"vertices":3564,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.5999844154319077,0.000028532696340718977,-0.19993895627350178],"max":[0.5999844154319077,1.9399999380111694,0.19993895627350178]},"sizeMeters":[1.2,1.94,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:48.051Z","updatedAt":"2026-09-08T10:43:48.159Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31060/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RollingSceneryFlatAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31060/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31060/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31060/v1/model.glb\" alt=\"Rolling Scenery Flat (Abandoned Puppet Theatre and Prop Vault)\" 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/31060/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/31060/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31061","slug":"abandoned-puppet-theatre-and-prop-vault-scenery-track--6838572e","title":"Scenery Track Straight (Abandoned Puppet Theatre and Prop Vault)","summary":"Twin scenery rails with bolted cross sleepers and real matching endpoint ports.","description":"Twin scenery rails with bolted cross sleepers and real matching endpoint ports. Dimensions 1.50 × 0.07 × 0.42 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-scenery-track--6838572e","cdnUrl":"https://cdn.3dassets.dev/assets/31061/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-scenery-track--6838572e","thumbnailUrl":"https://cdn.3dassets.dev/assets/31061/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31061/v1/poster.webp","blurhash":"U48|kS%104xZ.5?ZV]IW00bY~TIW4X02pF-o","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":27980,"triangles":1500,"vertices":1060,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.75,0.0000240337249413098,-0.209976497171825],"max":[0.75,0.06495910419147378,0.209976497171825]},"sizeMeters":[1.5,0.065,0.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:48.582Z","updatedAt":"2026-09-08T10:43:48.678Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31061/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SceneryTrackStraightAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31061/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31061/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31061/v1/model.glb\" alt=\"Scenery Track Straight (Abandoned Puppet Theatre and Prop Vault)\" 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/31061/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/31061/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31062","slug":"abandoned-puppet-theatre-and-prop-vault-scenery-track--493f526d","title":"Scenery Track End (Abandoned Puppet Theatre and Prop Vault)","summary":"Track terminal crossbeam with paired raised resilient stops; standalone terminal component.","description":"Track terminal crossbeam with paired raised resilient stops; standalone terminal component. Dimensions 0.18 × 0.26 × 0.42 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-scenery-track--493f526d","cdnUrl":"https://cdn.3dassets.dev/assets/31062/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-scenery-track--493f526d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31062/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31062/v1/poster.webp","blurhash":"UDA+{LxZ9bt60hE2t5s:59-U%1NI~9WBRk%1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":17620,"triangles":900,"vertices":636,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.08998717941648701,0.000008545537176038454,-0.20999999344348907],"max":[0.08998717941648701,0.25999878736900506,0.20999999344348907]},"sizeMeters":[0.18,0.26,0.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:49.384Z","updatedAt":"2026-09-08T10:43:49.476Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31062/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SceneryTrackEndAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31062/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31062/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31062/v1/model.glb\" alt=\"Scenery Track End (Abandoned Puppet Theatre and Prop Vault)\" 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/31062/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/31062/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31063","slug":"abandoned-puppet-theatre-and-prop-vault-curtain-rail-5838438d","title":"Curtain Rail (Abandoned Puppet Theatre and Prop Vault)","summary":"Curtain rail with individually suspended rings and two structural attachment shoes.","description":"Curtain rail with individually suspended rings and two structural attachment shoes. Dimensions 4.35 × 0.33 × 0.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-curtain-rail-5838438d","cdnUrl":"https://cdn.3dassets.dev/assets/31063/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-curtain-rail-5838438d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31063/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31063/v1/poster.webp","blurhash":"U47wl~$,RRnhxH~TxGs,00bW^~tRO903S3%L","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":142768,"triangles":9092,"vertices":5388,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2.174999952316284,-0.00008761178425052696,-0.04009399625944852],"max":[2.174999952316284,0.3291104698274742,0.04009399625944852]},"sizeMeters":[4.35,0.329,0.08],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:49.440Z","updatedAt":"2026-09-08T10:43:49.537Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31063/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CurtainRailAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31063/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31063/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31063/v1/model.glb\" alt=\"Curtain Rail (Abandoned Puppet Theatre and Prop Vault)\" 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/31063/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/31063/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31064","slug":"abandoned-puppet-theatre-and-prop-vault-gathered-stage-cebd22a1","title":"Gathered Stage Curtain (Abandoned Puppet Theatre and Prop Vault)","summary":"Deep gathered burgundy curtain with solid folded fabric profiles, weighted hem and brass top binding; thick folds readable front and back.","description":"Deep gathered burgundy curtain with solid folded fabric profiles, weighted hem and brass top binding; thick folds readable front and back. Dimensions 1.04 × 2.25 × 0.15 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-gathered-stage-cebd22a1","cdnUrl":"https://cdn.3dassets.dev/assets/31064/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-gathered-stage-cebd22a1","thumbnailUrl":"https://cdn.3dassets.dev/assets/31064/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31064/v1/poster.webp","blurhash":"U17T2=^P000y~T$*0g9uYgtQU{IC~A-U5858","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":36252,"triangles":2040,"vertices":1373,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.5180555131687369,0,-0.07501968116575002],"max":[0.5180555131687369,2.25,0.07501968116575002]},"sizeMeters":[1.036,2.25,0.15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:49.806Z","updatedAt":"2026-09-08T10:43:49.905Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31064/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GatheredStageCurtainAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31064/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31064/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31064/v1/model.glb\" alt=\"Gathered Stage Curtain (Abandoned Puppet Theatre and Prop Vault)\" 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/31064/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/31064/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31065","slug":"abandoned-puppet-theatre-and-prop-vault-curtain-pulley-f6b2de5c","title":"Curtain Pulley Block (Abandoned Puppet Theatre and Prop Vault)","summary":"Double-cheek curtain pulley with inset grooved wheel, through axle and closed suspension eye.","description":"Double-cheek curtain pulley with inset grooved wheel, through axle and closed suspension eye. Dimensions 0.19 × 0.32 × 0.12 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-curtain-pulley-f6b2de5c","cdnUrl":"https://cdn.3dassets.dev/assets/31065/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-curtain-pulley-f6b2de5c","thumbnailUrl":"https://cdn.3dassets.dev/assets/31065/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31065/v1/poster.webp","blurhash":"U17wZk}=000k_1t54qNK02Eg~A$%02jZ~UV]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":32492,"triangles":1816,"vertices":1220,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.09700000286102295,0,-0.060008330975471064],"max":[0.09700000286102295,0.32199999690055847,0.060008330975471064]},"sizeMeters":[0.194,0.322,0.12],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:50.318Z","updatedAt":"2026-09-08T10:43:50.431Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31065/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CurtainPulleyBlockAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31065/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31065/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31065/v1/model.glb\" alt=\"Curtain Pulley Block (Abandoned Puppet Theatre and Prop Vault)\" 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/31065/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/31065/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31066","slug":"abandoned-puppet-theatre-and-prop-vault-counterweight--95a472ca","title":"Counterweight Cradle (Abandoned Puppet Theatre and Prop Vault)","summary":"Counterweight frame with stacked individual weights, restrained guide rods and top crosshead.","description":"Counterweight frame with stacked individual weights, restrained guide rods and top crosshead. Dimensions 0.30 × 0.68 × 0.24 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-counterweight--95a472ca","cdnUrl":"https://cdn.3dassets.dev/assets/31066/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-counterweight--95a472ca","thumbnailUrl":"https://cdn.3dassets.dev/assets/31066/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31066/v1/poster.webp","blurhash":"U66tz8t602M|?Ft59bNH~St64=Iq--s.IWNH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54284,"triangles":3000,"vertices":2138,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.14997825821070968,0,-0.11998466656799374],"max":[0.14997825821070968,0.675000011920929,0.11998466656799374]},"sizeMeters":[0.3,0.675,0.24],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:51.046Z","updatedAt":"2026-09-08T10:43:51.174Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31066/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CounterweightCradleAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31066/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31066/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31066/v1/model.glb\" alt=\"Counterweight Cradle (Abandoned Puppet Theatre and Prop Vault)\" 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/31066/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/31066/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31067","slug":"abandoned-puppet-theatre-and-prop-vault-footlight-trou-5d92bfc5","title":"Footlight Trough (Abandoned Puppet Theatre and Prop Vault)","summary":"Six individual bulbs in a lined footlight trough with reflector cups and rear glare baffle.","description":"Six individual bulbs in a lined footlight trough with reflector cups and rear glare baffle. Dimensions 1.35 × 0.21 × 0.23 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-footlight-trou-5d92bfc5","cdnUrl":"https://cdn.3dassets.dev/assets/31067/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-footlight-trou-5d92bfc5","thumbnailUrl":"https://cdn.3dassets.dev/assets/31067/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31067/v1/poster.webp","blurhash":"U57n8kaj9Iof~U-:M}M|01?F-oIW029a?Ext","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":96080,"triangles":5688,"vertices":3691,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.675000011920929,0.000006407686731827594,-0.11374477750771553],"max":[0.675000011920929,0.20995438005397193,0.11375397322327377]},"sizeMeters":[1.35,0.21,0.227],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:51.075Z","updatedAt":"2026-09-08T10:43:51.188Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31067/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FootlightTroughAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31067/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31067/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31067/v1/model.glb\" alt=\"Footlight Trough (Abandoned Puppet Theatre and Prop Vault)\" 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/31067/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/31067/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31068","slug":"abandoned-puppet-theatre-and-prop-vault-stage-spotligh-998dc62f","title":"Stage Spotlight (Abandoned Puppet Theatre and Prop Vault)","summary":"Thick hollow spotlight barrel with recessed lens, cooling hoops and attached side yoke; static lamp.","description":"Thick hollow spotlight barrel with recessed lens, cooling hoops and attached side yoke; static lamp. Dimensions 0.27 × 0.27 × 0.34 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-stage-spotligh-998dc62f","cdnUrl":"https://cdn.3dassets.dev/assets/31068/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-stage-spotligh-998dc62f","thumbnailUrl":"https://cdn.3dassets.dev/assets/31068/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31068/v1/poster.webp","blurhash":"U7AAEk~q9IDh^$skIVs=01DiICx^_2-;E34p","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":65620,"triangles":3652,"vertices":2551,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.13499548187129837,-0.0000011502330339030475,-0.17000000178813934],"max":[0.13499548187129837,0.2650011359279192,0.17000000178813934]},"sizeMeters":[0.27,0.265,0.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:51.472Z","updatedAt":"2026-09-08T10:43:51.581Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31068/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StageSpotlightAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31068/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31068/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31068/v1/model.glb\" alt=\"Stage Spotlight (Abandoned Puppet Theatre and Prop Vault)\" 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/31068/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/31068/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31069","slug":"abandoned-puppet-theatre-and-prop-vault-spotlight-yoke-335ca905","title":"Spotlight Yoke Stand (Abandoned Puppet Theatre and Prop Vault)","summary":"Three-leg spotlight support with spreader struts, closed telescoping stem and top yoke mounting plate.","description":"Three-leg spotlight support with spreader struts, closed telescoping stem and top yoke mounting plate. Dimensions 0.58 × 1.55 × 0.66 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-spotlight-yoke-335ca905","cdnUrl":"https://cdn.3dassets.dev/assets/31069/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-spotlight-yoke-335ca905","thumbnailUrl":"https://cdn.3dassets.dev/assets/31069/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31069/v1/poster.webp","blurhash":"U13+1Dxt009t~mt70NIn?Fj]D+f4_1oe9GWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15980,"triangles":684,"vertices":612,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.29054028443735425,-0.000010544627292802256,-0.3314463496208191],"max":[0.29054028443735425,1.5545669794082642,0.3314463496208191]},"sizeMeters":[0.581,1.555,0.663],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:52.013Z","updatedAt":"2026-09-08T10:43:52.112Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31069/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SpotlightYokeStandAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31069/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31069/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31069/v1/model.glb\" alt=\"Spotlight Yoke Stand (Abandoned Puppet Theatre and Prop Vault)\" 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/31069/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/31069/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31070","slug":"abandoned-puppet-theatre-and-prop-vault-lighting-contr-fa7fd39b","title":"Lighting Control Desk (Abandoned Puppet Theatre and Prop Vault)","summary":"Original manual lighting desk with eight modeled fader slots, caps and three rotary controls on a supported table.","description":"Original manual lighting desk with eight modeled fader slots, caps and three rotary controls on a supported table. Dimensions 1.10 × 0.99 × 0.58 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-lighting-contr-fa7fd39b","cdnUrl":"https://cdn.3dassets.dev/assets/31070/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-lighting-contr-fa7fd39b","thumbnailUrl":"https://cdn.3dassets.dev/assets/31070/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31070/v1/poster.webp","blurhash":"U3AvUi=e00Ee}e-UFo9u04nU=]kk~7-W0h9a","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":133564,"triangles":7476,"vertices":5493,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.550000011920929,-0.000006234954717354579,-0.2900143499853453],"max":[0.550000011920929,0.9879884667860329,0.2900143499853453]},"sizeMeters":[1.1,0.988,0.58],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:53.723Z","updatedAt":"2026-09-08T10:43:53.822Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31070/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LightingControlDeskAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31070/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31070/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31070/v1/model.glb\" alt=\"Lighting Control Desk (Abandoned Puppet Theatre and Prop Vault)\" 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/31070/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/31070/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31071","slug":"abandoned-puppet-theatre-and-prop-vault-sound-effects--0300098d","title":"Sound Effects Table (Abandoned Puppet Theatre and Prop Vault)","summary":"Practical effects table with graduated striking blocks and mounted striker bar; no audio simulation.","description":"Practical effects table with graduated striking blocks and mounted striker bar; no audio simulation. Dimensions 1.30 × 0.92 × 0.68 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-sound-effects--0300098d","cdnUrl":"https://cdn.3dassets.dev/assets/31071/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-sound-effects--0300098d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31071/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31071/v1/poster.webp","blurhash":"UBC?43%102WB~V%1IVNH0Nt7%1NGR5xtXSIo","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":61700,"triangles":3364,"vertices":2414,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499999761581421,0.000027082296338465373,-0.34004637566157636],"max":[0.6499999761581421,0.9219729086437556,0.34004637566157636]},"sizeMeters":[1.3,0.922,0.68],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:52.793Z","updatedAt":"2026-09-08T10:43:52.893Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31071/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SoundEffectsTableAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31071/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31071/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31071/v1/model.glb\" alt=\"Sound Effects Table (Abandoned Puppet Theatre and Prop Vault)\" 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/31071/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/31071/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31072","slug":"abandoned-puppet-theatre-and-prop-vault-thunder-sheet--6c8da486","title":"Thunder Sheet Frame (Abandoned Puppet Theatre and Prop Vault)","summary":"Thin metal thunder sheet hung through two complete loops beneath a stable timber effects frame.","description":"Thin metal thunder sheet hung through two complete loops beneath a stable timber effects frame. Dimensions 1.34 × 1.78 × 0.52 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-thunder-sheet--6c8da486","cdnUrl":"https://cdn.3dassets.dev/assets/31072/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-thunder-sheet--6c8da486","thumbnailUrl":"https://cdn.3dassets.dev/assets/31072/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31072/v1/poster.webp","blurhash":"U1A9+b}r005+Vs}=4?04AL4?n3~8XS_Kt102","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":49724,"triangles":2824,"vertices":1870,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6699920544186448,0,-0.26001678100091974],"max":[0.6699920544186448,1.7799999713897705,0.26001678100091974]},"sizeMeters":[1.34,1.78,0.52],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:53.153Z","updatedAt":"2026-09-08T10:43:53.264Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31072/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThunderSheetFrameAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31072/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31072/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31072/v1/model.glb\" alt=\"Thunder Sheet Frame (Abandoned Puppet Theatre and Prop Vault)\" 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/31072/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/31072/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31073","slug":"abandoned-puppet-theatre-and-prop-vault-wind-effects-d-f09f6a95","title":"Wind Effects Drum (Abandoned Puppet Theatre and Prop Vault)","summary":"Hand-cranked twelve-slat wind drum on bearing posts with supported friction cloth bridge and shaped crank.","description":"Hand-cranked twelve-slat wind drum on bearing posts with supported friction cloth bridge and shaped crank. Dimensions 1.29 × 0.84 × 0.60 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-wind-effects-d-f09f6a95","cdnUrl":"https://cdn.3dassets.dev/assets/31073/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-wind-effects-d-f09f6a95","thumbnailUrl":"https://cdn.3dassets.dev/assets/31073/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31073/v1/poster.webp","blurhash":"U8DIm:~A00nz?v=|4n4p0U9wr;RPIVof^%s+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":131904,"triangles":6828,"vertices":5449,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.6475000381469727,-0.000003989823995909081,-0.29999298738884667],"max":[0.6475000381469727,0.8449967296294786,0.29999298738884667]},"sizeMeters":[1.295,0.845,0.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:53.746Z","updatedAt":"2026-09-08T10:43:53.858Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31073/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WindEffectsDrumAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31073/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31073/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31073/v1/model.glb\" alt=\"Wind Effects Drum (Abandoned Puppet Theatre and Prop Vault)\" 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/31073/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/31073/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31074","slug":"abandoned-puppet-theatre-and-prop-vault-audience-bench-b8d7e43d","title":"Audience Bench (Abandoned Puppet Theatre and Prop Vault)","summary":"Timber audience bench with thick burgundy backrest, four joined legs and lower stretcher.","description":"Timber audience bench with thick burgundy backrest, four joined legs and lower stretcher. Dimensions 1.60 × 0.87 × 0.43 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-audience-bench-b8d7e43d","cdnUrl":"https://cdn.3dassets.dev/assets/31074/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-audience-bench-b8d7e43d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31074/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31074/v1/poster.webp","blurhash":"U6Ch$byA0y=^}]~9AU9u02Iu-mEL5l4?i{%b","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38512,"triangles":2100,"vertices":1491,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.800000011920929,0.000007094249707323419,-0.2162899021694235],"max":[0.800000011920929,0.8700247404076348,0.21622238276016945]},"sizeMeters":[1.6,0.87,0.433],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:54.475Z","updatedAt":"2026-09-08T10:43:54.584Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31074/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AudienceBenchAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31074/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31074/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31074/v1/model.glb\" alt=\"Audience Bench (Abandoned Puppet Theatre and Prop Vault)\" 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/31074/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/31074/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31075","slug":"abandoned-puppet-theatre-and-prop-vault-ticket-hatch-d5cc5af0","title":"Ticket Hatch (Abandoned Puppet Theatre and Prop Vault)","summary":"Compact barred ticket hatch with serving ledge, cashier cabinet and framed small transaction opening.","description":"Compact barred ticket hatch with serving ledge, cashier cabinet and framed small transaction opening. Dimensions 1.00 × 1.62 × 0.63 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-ticket-hatch-d5cc5af0","cdnUrl":"https://cdn.3dassets.dev/assets/31075/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-ticket-hatch-d5cc5af0","thumbnailUrl":"https://cdn.3dassets.dev/assets/31075/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31075/v1/poster.webp","blurhash":"U9Alwg$*02EM~Sox9JRR57R+%1n+D+RktPkV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":41788,"triangles":2076,"vertices":1659,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.5,-0.000005317559432727048,-0.314981536301767],"max":[0.5,1.6200062705995573,0.314981536301767]},"sizeMeters":[1,1.62,0.63],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:54.789Z","updatedAt":"2026-09-08T10:43:54.892Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31075/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TicketHatchAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31075/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31075/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31075/v1/model.glb\" alt=\"Ticket Hatch (Abandoned Puppet Theatre and Prop Vault)\" 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/31075/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/31075/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31076","slug":"abandoned-puppet-theatre-and-prop-vault-programme-cabi-78615800","title":"Programme Cabinet (Abandoned Puppet Theatre and Prop Vault)","summary":"Open programme cabinet with five stocked paper shelves and retaining lips.","description":"Open programme cabinet with five stocked paper shelves and retaining lips. Dimensions 0.70 × 1.40 × 0.35 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-programme-cabi-78615800","cdnUrl":"https://cdn.3dassets.dev/assets/31076/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-programme-cabi-78615800","thumbnailUrl":"https://cdn.3dassets.dev/assets/31076/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31076/v1/poster.webp","blurhash":"U7CFbH-o004:~AxG9bI;0{ax-WWZ-.t5E3NH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":118124,"triangles":6600,"vertices":4673,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.3500314282166582,-0.0000024403517587534562,-0.17623569488718208],"max":[0.3500314282166582,1.399999976158142,0.17626571291623622]},"sizeMeters":[0.7,1.4,0.353],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:55.351Z","updatedAt":"2026-09-08T10:43:55.464Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31076/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ProgrammeCabinetAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31076/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31076/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31076/v1/model.glb\" alt=\"Programme Cabinet (Abandoned Puppet Theatre and Prop Vault)\" 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/31076/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/31076/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31077","slug":"abandoned-puppet-theatre-and-prop-vault-puppet-storage-5b04141d","title":"Puppet Storage Cabinet (Abandoned Puppet Theatre and Prop Vault)","summary":"Deep open puppet vault cabinet with divided padded compartments, rear wall and substantial shelf thickness; assembly storage rather than duplicate puppet.","description":"Deep open puppet vault cabinet with divided padded compartments, rear wall and substantial shelf thickness; assembly storage rather than duplicate puppet. Dimensions 1.35 × 2.05 × 0.60 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-puppet-storage-5b04141d","cdnUrl":"https://cdn.3dassets.dev/assets/31077/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-puppet-storage-5b04141d","thumbnailUrl":"https://cdn.3dassets.dev/assets/31077/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31077/v1/poster.webp","blurhash":"UADbQF}?01D+=^xFNKR-5SJ7odbI-:t6IVM|","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":81988,"triangles":4500,"vertices":3200,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.674983656872169,0.00002075343865712287,-0.3012354293157195],"max":[0.674983656872169,2.049999952316284,0.30128615625161953]},"sizeMeters":[1.35,2.05,0.603],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:55.586Z","updatedAt":"2026-09-08T10:43:55.700Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31077/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PuppetStorageCabinetAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31077/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31077/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31077/v1/model.glb\" alt=\"Puppet Storage Cabinet (Abandoned Puppet Theatre and Prop Vault)\" 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/31077/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/31077/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31078","slug":"abandoned-puppet-theatre-and-prop-vault-marionette-han-ed6f1de6","title":"Marionette Hanging Rail (Abandoned Puppet Theatre and Prop Vault)","summary":"Freestanding storage rail with three shaped suspension hooks and broad stable feet.","description":"Freestanding storage rail with three shaped suspension hooks and broad stable feet. Dimensions 1.60 × 1.93 × 0.58 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-marionette-han-ed6f1de6","cdnUrl":"https://cdn.3dassets.dev/assets/31078/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-marionette-han-ed6f1de6","thumbnailUrl":"https://cdn.3dassets.dev/assets/31078/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31078/v1/poster.webp","blurhash":"U2AcVM~900610O=_%a0O0W9[}*}HpG^j#T0M","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37076,"triangles":2044,"vertices":1420,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.8000503455013266,0,-0.2899548289675219],"max":[0.8000503455013266,1.9249809018226838,0.2899548289675219]},"sizeMeters":[1.6,1.925,0.58],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:56.106Z","updatedAt":"2026-09-08T10:43:56.205Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31078/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarionetteHangingRailAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31078/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31078/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31078/v1/model.glb\" alt=\"Marionette Hanging Rail (Abandoned Puppet Theatre and Prop Vault)\" 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/31078/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/31078/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31079","slug":"abandoned-puppet-theatre-and-prop-vault-marionette-con-2e275810","title":"Marionette Control Cross (Abandoned Puppet Theatre and Prop Vault)","summary":"Detached two-level timber marionette control cross with metal string eyes; reusable assembly controller component.","description":"Detached two-level timber marionette control cross with metal string eyes; reusable assembly controller component. Dimensions 0.56 × 0.07 × 0.40 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-marionette-con-2e275810","cdnUrl":"https://cdn.3dassets.dev/assets/31079/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-marionette-con-2e275810","thumbnailUrl":"https://cdn.3dassets.dev/assets/31079/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31079/v1/poster.webp","blurhash":"U88WpWt60Nr?xZxYWBNI03Rk~AbbEMIqt7%0","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":28112,"triangles":1624,"vertices":1018,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2800000011920929,0.0000037398478875474983,-0.20000854603418458],"max":[0.2800000011920929,0.0749962631323447,0.20000854603418458]},"sizeMeters":[0.56,0.075,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:56.450Z","updatedAt":"2026-09-08T10:43:56.563Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31079/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MarionetteControlCrossAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31079/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31079/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31079/v1/model.glb\" alt=\"Marionette Control Cross (Abandoned Puppet Theatre and Prop Vault)\" 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/31079/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/31079/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31081","slug":"abandoned-puppet-theatre-and-prop-vault-string-tuning--45beccc0","title":"String Tuning Jig (Abandoned Puppet Theatre and Prop Vault)","summary":"Six-pin string tensioning jig with thumb knobs and individual short restrained tuning lines.","description":"Six-pin string tensioning jig with thumb knobs and individual short restrained tuning lines. Dimensions 0.65 × 0.20 × 0.22 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-string-tuning--45beccc0","cdnUrl":"https://cdn.3dassets.dev/assets/31081/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-string-tuning--45beccc0","thumbnailUrl":"https://cdn.3dassets.dev/assets/31081/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31081/v1/poster.webp","blurhash":"UBAcYdxa9uoM58%1%1NH03E2xtxZ~9E2E3xZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":101704,"triangles":5580,"vertices":4034,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.32499998807907104,0.0000053420284859655165,-0.10998641522900536],"max":[0.32499998807907104,0.19500992084579444,0.10998641522900536]},"sizeMeters":[0.65,0.195,0.22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:57.358Z","updatedAt":"2026-09-08T10:43:57.453Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31081/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StringTuningJigAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31081/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31081/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31081/v1/model.glb\" alt=\"String Tuning Jig (Abandoned Puppet Theatre and Prop Vault)\" 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/31081/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/31081/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31080","slug":"abandoned-puppet-theatre-and-prop-vault-articulated-co-13b5c0bd","title":"Articulated Courier Marionette (Abandoned Puppet Theatre and Prop Vault)","summary":"Original courier marionette with carved hat and face, messenger satchel, separate ball-jointed arms and knees, feet, five taut control strings and supported control cross on rear display mast. Static stringed assembly.","description":"Original courier marionette with carved hat and face, messenger satchel, separate ball-jointed arms and knees, feet, five taut control strings and supported control cross on rear display mast. Static stringed assembly. Dimensions 0.62 × 1.64 × 0.48 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-articulated-co-13b5c0bd","cdnUrl":"https://cdn.3dassets.dev/assets/31080/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-articulated-co-13b5c0bd","thumbnailUrl":"https://cdn.3dassets.dev/assets/31080/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31080/v1/poster.webp","blurhash":"U2AJl]~o0000PU-;n401Q*xt%QIVI.IBsX?v","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":239464,"triangles":13856,"vertices":9424,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.3099898507874686,0,-0.24003318747897265],"max":[0.3099898507874686,1.6349999904632568,0.24003318747897265]},"sizeMeters":[0.62,1.635,0.48],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:57.327Z","updatedAt":"2026-09-08T10:43:57.421Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31080/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ArticulatedCourierMarionetteAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31080/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31080/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31080/v1/model.glb\" alt=\"Articulated Courier Marionette (Abandoned Puppet Theatre and Prop Vault)\" 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/31080/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/31080/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31082","slug":"abandoned-puppet-theatre-and-prop-vault-long-neck-bird-b334a180","title":"Long Neck Bird Marionette (Abandoned Puppet Theatre and Prop Vault)","summary":"Original long-neck bird with three separate neck links, sculpted head and projecting beak, feathered wings, long leg rods and split toes. Four strings join its supported control cross; anatomy differs from courier.","description":"Original long-neck bird with three separate neck links, sculpted head and projecting beak, feathered wings, long leg rods and split toes. Four strings join its supported control cross; anatomy differs from courier. Dimensions 0.72 × 1.69 × 0.73 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-long-neck-bird-b334a180","cdnUrl":"https://cdn.3dassets.dev/assets/31082/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-long-neck-bird-b334a180","thumbnailUrl":"https://cdn.3dassets.dev/assets/31082/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31082/v1/poster.webp","blurhash":"U2A9[;?t00001v$*+c5QDzIBxz_2MvM|x_.6","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":169428,"triangles":9536,"vertices":6669,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.35999151888876546,0,-0.3640025664529857],"max":[0.35999151888876546,1.684999942779541,0.3640025664529857]},"sizeMeters":[0.72,1.685,0.728],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:57.768Z","updatedAt":"2026-09-08T10:43:57.871Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31082/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LongNeckBirdMarionetteAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31082/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31082/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31082/v1/model.glb\" alt=\"Long Neck Bird Marionette (Abandoned Puppet Theatre and Prop Vault)\" 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/31082/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/31082/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31083","slug":"abandoned-puppet-theatre-and-prop-vault-hinged-jaw-rod-2ca87fb9","title":"Hinged Jaw Rod Puppet (Abandoned Puppet Theatre and Prop Vault)","summary":"Original pointed-cap rod puppet with hinged projecting lower jaw, through pivot, jaw operating rod and central supported main rod. Separate solid arms; jaw mechanism is visible.","description":"Original pointed-cap rod puppet with hinged projecting lower jaw, through pivot, jaw operating rod and central supported main rod. Separate solid arms; jaw mechanism is visible. Dimensions 0.46 × 1.19 × 0.40 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-hinged-jaw-rod-2ca87fb9","cdnUrl":"https://cdn.3dassets.dev/assets/31083/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-hinged-jaw-rod-2ca87fb9","thumbnailUrl":"https://cdn.3dassets.dev/assets/31083/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31083/v1/poster.webp","blurhash":"U38De9%100589Noz-*VsMbjYtTWY00M{~V-:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":134780,"triangles":7708,"vertices":5191,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.23002327978610992,0,-0.20001656346101074],"max":[0.23002327978610992,1.184999942779541,0.20001252468174113]},"sizeMeters":[0.46,1.185,0.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:58.131Z","updatedAt":"2026-09-08T10:43:58.229Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31083/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HingedJawRodPuppetAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31083/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31083/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31083/v1/model.glb\" alt=\"Hinged Jaw Rod Puppet (Abandoned Puppet Theatre and Prop Vault)\" 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/31083/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/31083/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31084","slug":"abandoned-puppet-theatre-and-prop-vault-fabric-glove-p-a49a0841","title":"Fabric Glove Puppet (Abandoned Puppet Theatre and Prop Vault)","summary":"Hollow glove puppet with modeled open hand-entry cavity, thick flared fabric body, sleeve arms and shaped head. Original gentle cap character; no hidden support closes the hand opening.","description":"Hollow glove puppet with modeled open hand-entry cavity, thick flared fabric body, sleeve arms and shaped head. Original gentle cap character; no hidden support closes the hand opening. Dimensions 0.53 × 0.62 × 0.36 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-fabric-glove-p-a49a0841","cdnUrl":"https://cdn.3dassets.dev/assets/31084/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-fabric-glove-p-a49a0841","thumbnailUrl":"https://cdn.3dassets.dev/assets/31084/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31084/v1/poster.webp","blurhash":"U59sbo-W005P.3kA9IRk00NG}]$+R8V@%fxv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":130720,"triangles":7508,"vertices":5070,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.2630000114440918,-0.00001850375645795488,-0.18000818200316868],"max":[0.2630000114440918,0.6199946530152146,0.18000818200316868]},"sizeMeters":[0.526,0.62,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:58.935Z","updatedAt":"2026-09-08T10:43:59.043Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31084/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FabricGlovePuppetAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31084/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31084/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31084/v1/model.glb\" alt=\"Fabric Glove Puppet (Abandoned Puppet Theatre and Prop Vault)\" 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/31084/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/31084/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31085","slug":"abandoned-puppet-theatre-and-prop-vault-cutwork-shadow-3f5f01e4","title":"Cutwork Shadow Puppet (Abandoned Puppet Theatre and Prop Vault)","summary":"Intentionally thin articulated shadow figure with true torso cutout, original angular bird-mask profile, separate arm and leg silhouettes, brass articulation pins and rear operating stick. Thin silhouette is functional.","description":"Intentionally thin articulated shadow figure with true torso cutout, original angular bird-mask profile, separate arm and leg silhouettes, brass articulation pins and rear operating stick. Thin silhouette is functional. Dimensions 0.57 × 0.87 × 0.08 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-cutwork-shadow-3f5f01e4","cdnUrl":"https://cdn.3dassets.dev/assets/31085/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-cutwork-shadow-3f5f01e4","thumbnailUrl":"https://cdn.3dassets.dev/assets/31085/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31085/v1/poster.webp","blurhash":"U49GT@$*019]%0s:M}R*03WC~AbaE7Na$~$Q","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":60856,"triangles":2588,"vertices":2649,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2833802882547501,0,-0.03848919574846114],"max":[0.2833802882547501,0.8727814555168152,0.038506590402695266]},"sizeMeters":[0.567,0.873,0.077],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:59.012Z","updatedAt":"2026-09-08T10:43:59.112Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31085/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CutworkShadowPuppetAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31085/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31085/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31085/v1/model.glb\" alt=\"Cutwork Shadow Puppet (Abandoned Puppet Theatre and Prop Vault)\" 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/31085/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/31085/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31086","slug":"abandoned-puppet-theatre-and-prop-vault-shadow-screen--aeaf5906","title":"Shadow Screen Frame (Abandoned Puppet Theatre and Prop Vault)","summary":"Thick freestanding shadow-screen frame with tensioned pale screen, supported feet and complete back surfaces.","description":"Thick freestanding shadow-screen frame with tensioned pale screen, supported feet and complete back surfaces. Dimensions 2.08 × 1.65 × 0.55 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-shadow-screen--aeaf5906","cdnUrl":"https://cdn.3dassets.dev/assets/31086/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-shadow-screen--aeaf5906","thumbnailUrl":"https://cdn.3dassets.dev/assets/31086/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31086/v1/poster.webp","blurhash":"UHFFNg%200V?xu-oIV9a00NH~qj[RPs+xtt8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38520,"triangles":2100,"vertices":1492,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-1.0399999618530273,-0.0000617816395314108,-0.27502058990620076],"max":[1.0399999618530273,1.6500617577976735,0.27502058990620076]},"sizeMeters":[2.08,1.65,0.55],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:59.531Z","updatedAt":"2026-09-08T10:43:59.651Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31086/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShadowScreenFrameAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31086/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31086/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31086/v1/model.glb\" alt=\"Shadow Screen Frame (Abandoned Puppet Theatre and Prop Vault)\" 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/31086/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/31086/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31087","slug":"abandoned-puppet-theatre-and-prop-vault-puppet-display-aab9e8ba","title":"Puppet Display Cradle (Abandoned Puppet Theatre and Prop Vault)","summary":"Padded concave puppet cradle on a closed support post and broad base; reusable assembly component.","description":"Padded concave puppet cradle on a closed support post and broad base; reusable assembly component. Dimensions 0.40 × 0.52 × 0.38 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-puppet-display-aab9e8ba","cdnUrl":"https://cdn.3dassets.dev/assets/31087/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-puppet-display-aab9e8ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/31087/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31087/v1/poster.webp","blurhash":"U6A]Qg^i019u03Vu^$SyobspRkR*~mo{RSWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16968,"triangles":584,"vertices":660,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.20000000298023224,0.00000892610536120178,-0.18998993172294348],"max":[0.20000000298023224,0.5189847549792557,0.18998993172294348]},"sizeMeters":[0.4,0.519,0.38],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:43:59.826Z","updatedAt":"2026-09-08T10:43:59.919Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31087/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PuppetDisplayCradleAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31087/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31087/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31087/v1/model.glb\" alt=\"Puppet Display Cradle (Abandoned Puppet Theatre and Prop Vault)\" 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/31087/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/31087/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31088","slug":"abandoned-puppet-theatre-and-prop-vault-padded-puppet--9aee3de5","title":"Padded Puppet Transport Chest (Abandoned Puppet Theatre and Prop Vault)","summary":"Closed padded puppet transport chest with layered lid, reinforced edges, front latches and carrying handle; fitted internal dividers are modeled.","description":"Closed padded puppet transport chest with layered lid, reinforced edges, front latches and carrying handle; fitted internal dividers are modeled. Dimensions 0.95 × 0.40 × 0.60 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-padded-puppet--9aee3de5","cdnUrl":"https://cdn.3dassets.dev/assets/31088/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-padded-puppet--9aee3de5","thumbnailUrl":"https://cdn.3dassets.dev/assets/31088/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31088/v1/poster.webp","blurhash":"U8EU[7?F03Se~T-nNHNH01NH$%Rj4;NcRlIp","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":70500,"triangles":3912,"vertices":2751,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4749999940395355,-0.000011970672102595836,-0.3021821522338348],"max":[0.4749999940395355,0.3950119814009386,0.3021680469559525]},"sizeMeters":[0.95,0.395,0.604],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:00.630Z","updatedAt":"2026-09-08T10:44:00.730Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31088/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaddedPuppetTransportChestAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31088/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31088/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31088/v1/model.glb\" alt=\"Padded Puppet Transport Chest (Abandoned Puppet Theatre and Prop Vault)\" 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/31088/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/31088/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31089","slug":"abandoned-puppet-theatre-and-prop-vault-puppet-repair--5c36feb1","title":"Puppet Repair Bench (Abandoned Puppet Theatre and Prop Vault)","summary":"Substantial repair workbench with thick replaceable timber top, stocked lower shelf space and deep pull drawer.","description":"Substantial repair workbench with thick replaceable timber top, stocked lower shelf space and deep pull drawer. Dimensions 1.74 × 0.89 × 0.82 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-puppet-repair--5c36feb1","cdnUrl":"https://cdn.3dassets.dev/assets/31089/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-puppet-repair--5c36feb1","thumbnailUrl":"https://cdn.3dassets.dev/assets/31089/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31089/v1/poster.webp","blurhash":"UFD8]+xa0NWV~A%0M}NH0gxZ-URlI;xZWXRk","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":49484,"triangles":2712,"vertices":1895,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.8700000047683716,0.000045447686690125444,-0.409975587439449],"max":[0.8700000047683716,0.8850105958166355,0.409975587439449]},"sizeMeters":[1.74,0.885,0.82],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:00.697Z","updatedAt":"2026-09-08T10:44:00.794Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31089/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PuppetRepairBenchAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31089/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31089/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31089/v1/model.glb\" alt=\"Puppet Repair Bench (Abandoned Puppet Theatre and Prop Vault)\" 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/31089/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/31089/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31090","slug":"abandoned-puppet-theatre-and-prop-vault-carving-vise-e5b03a7e","title":"Carving Vise (Abandoned Puppet Theatre and Prop Vault)","summary":"Bench carving vise with two padded jaws, through screw and sliding cross handle.","description":"Bench carving vise with two padded jaws, through screw and sliding cross handle. Dimensions 0.39 × 0.23 × 0.23 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-carving-vise-e5b03a7e","cdnUrl":"https://cdn.3dassets.dev/assets/31090/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-carving-vise-e5b03a7e","thumbnailUrl":"https://cdn.3dassets.dev/assets/31090/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31090/v1/poster.webp","blurhash":"U5A0N=={02IV}@w^EMkU4;xDoyJ8S~%LoH0g","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":31968,"triangles":1628,"vertices":1209,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.19499999284744263,0.000014345991413935999,-0.1150111350373753],"max":[0.19499999284744263,0.2299974809985418,0.1150111350373753]},"sizeMeters":[0.39,0.23,0.23],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:01.185Z","updatedAt":"2026-09-08T10:44:01.274Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31090/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CarvingViseAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31090/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31090/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31090/v1/model.glb\" alt=\"Carving Vise (Abandoned Puppet Theatre and Prop Vault)\" 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/31090/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/31090/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31091","slug":"abandoned-puppet-theatre-and-prop-vault-carving-gouge--f74a82a3","title":"Carving Gouge Rack (Abandoned Puppet Theatre and Prop Vault)","summary":"Five carving tools with turned grips, steel tangs and distinct flared cutting ends held upright in a timber rack.","description":"Five carving tools with turned grips, steel tangs and distinct flared cutting ends held upright in a timber rack. Dimensions 0.55 × 0.42 × 0.22 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-carving-gouge--f74a82a3","cdnUrl":"https://cdn.3dassets.dev/assets/31091/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-carving-gouge--f74a82a3","thumbnailUrl":"https://cdn.3dassets.dev/assets/31091/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31091/v1/poster.webp","blurhash":"UBB{c3-m04Na0gxZ-UIp59IpxYxZ~9xtNHRj","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":68012,"triangles":3160,"vertices":2937,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2750000059604645,-0.000004656917563100604,-0.10998489572166775],"max":[0.2750000059604645,0.4219259763074033,0.10998489572166775]},"sizeMeters":[0.55,0.422,0.22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:01.584Z","updatedAt":"2026-09-08T10:44:01.701Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31091/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CarvingGougeRackAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31091/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31091/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31091/v1/model.glb\" alt=\"Carving Gouge Rack (Abandoned Puppet Theatre and Prop Vault)\" 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/31091/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/31091/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31092","slug":"abandoned-puppet-theatre-and-prop-vault-joint-pin-tray-9b3d851e","title":"Joint Pin Tray (Abandoned Puppet Theatre and Prop Vault)","summary":"Compartmented repair tray containing twelve discrete joint pins of graduated lengths.","description":"Compartmented repair tray containing twelve discrete joint pins of graduated lengths. Dimensions 0.40 × 0.06 × 0.26 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-joint-pin-tray-9b3d851e","cdnUrl":"https://cdn.3dassets.dev/assets/31092/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-joint-pin-tray-9b3d851e","thumbnailUrl":"https://cdn.3dassets.dev/assets/31092/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31092/v1/poster.webp","blurhash":"U49%U}%002oa~U-nMzNG00kD~AIp029vt7r_","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":100252,"triangles":5004,"vertices":4262,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2004999965429306,-0.000007385632450861157,-0.1304929632335746],"max":[0.2004999965429306,0.060007384291346354,0.1304929632335746]},"sizeMeters":[0.401,0.06,0.261],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:02.263Z","updatedAt":"2026-09-08T10:44:02.382Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31092/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function JointPinTrayAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31092/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31092/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31092/v1/model.glb\" alt=\"Joint Pin Tray (Abandoned Puppet Theatre and Prop Vault)\" 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/31092/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/31092/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31093","slug":"abandoned-puppet-theatre-and-prop-vault-string-spool-s-43bbc017","title":"String Spool Stand (Abandoned Puppet Theatre and Prop Vault)","summary":"Two flanged string spools on full-height axles with overhead guide bar and stable bench base.","description":"Two flanged string spools on full-height axles with overhead guide bar and stable bench base. Dimensions 0.44 × 0.40 × 0.28 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-string-spool-s-43bbc017","cdnUrl":"https://cdn.3dassets.dev/assets/31093/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-string-spool-s-43bbc017","thumbnailUrl":"https://cdn.3dassets.dev/assets/31093/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31093/v1/poster.webp","blurhash":"UAECI1-:00IW0Nxa%2E100Io?vt7~AjEni%N","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":51640,"triangles":2092,"vertices":2264,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2199999988079071,-0.000010299827560959068,-0.13998840220785738],"max":[0.2199999988079071,0.4019955997536192,0.13998840220785738]},"sizeMeters":[0.44,0.402,0.28],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:02.349Z","updatedAt":"2026-09-08T10:44:02.480Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31093/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StringSpoolStandAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31093/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31093/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31093/v1/model.glb\" alt=\"String Spool Stand (Abandoned Puppet Theatre and Prop Vault)\" 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/31093/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/31093/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31094","slug":"abandoned-puppet-theatre-and-prop-vault-costume-sewing-8367acee","title":"Costume Sewing Frame (Abandoned Puppet Theatre and Prop Vault)","summary":"Small costume sewing frame with tensioned fabric, separate thread lines and supported timber legs.","description":"Small costume sewing frame with tensioned fabric, separate thread lines and supported timber legs. Dimensions 0.77 × 0.53 × 0.30 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-costume-sewing-8367acee","cdnUrl":"https://cdn.3dassets.dev/assets/31094/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-costume-sewing-8367acee","thumbnailUrl":"https://cdn.3dassets.dev/assets/31094/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31094/v1/poster.webp","blurhash":"UBELvf-o00s*pI={D*4;00EM_NaK9Ysl_2x]","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":52664,"triangles":2676,"vertices":2106,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.38499999046325684,-0.000010152822753517476,-0.14998397406730776],"max":[0.38499999046325684,0.5250101289808956,0.14998397406730776]},"sizeMeters":[0.77,0.525,0.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:02.861Z","updatedAt":"2026-09-08T10:44:02.980Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31094/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CostumeSewingFrameAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31094/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31094/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31094/v1/model.glb\" alt=\"Costume Sewing Frame (Abandoned Puppet Theatre and Prop Vault)\" 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/31094/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/31094/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31095","slug":"abandoned-puppet-theatre-and-prop-vault-miniature-cost-e5fd152c","title":"Miniature Costume Hanger (Abandoned Puppet Theatre and Prop Vault)","summary":"Miniature triangular costume hanger with closed timber shoulders and curved hanging hook; assembly support component.","description":"Miniature triangular costume hanger with closed timber shoulders and curved hanging hook; assembly support component. Dimensions 0.37 × 0.23 × 0.02 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-miniature-cost-e5fd152c","cdnUrl":"https://cdn.3dassets.dev/assets/31095/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-miniature-cost-e5fd152c","thumbnailUrl":"https://cdn.3dassets.dev/assets/31095/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31095/v1/poster.webp","blurhash":"U59sq;IV03-n02?F$zIq0O0g^i-U~9%1Ipax","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":10736,"triangles":452,"vertices":370,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.18625739216804504,6.89313200852304e-7,-0.012005237350349777],"max":[0.18625739216804504,0.2266625314950943,0.012005237350349777]},"sizeMeters":[0.373,0.227,0.024],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:03.244Z","updatedAt":"2026-09-08T10:44:03.357Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31095/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MiniatureCostumeHangerAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31095/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31095/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31095/v1/model.glb\" alt=\"Miniature Costume Hanger (Abandoned Puppet Theatre and Prop Vault)\" 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/31095/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/31095/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31096","slug":"abandoned-puppet-theatre-and-prop-vault-puppet-head-su-5a2f50d2","title":"Puppet Head Support (Abandoned Puppet Theatre and Prop Vault)","summary":"Padded rounded head support on a turned neck and weighted circular foot; repair assembly component.","description":"Padded rounded head support on a turned neck and weighted circular foot; repair assembly component. Dimensions 0.26 × 0.35 × 0.26 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-puppet-head-su-5a2f50d2","cdnUrl":"https://cdn.3dassets.dev/assets/31096/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-puppet-head-su-5a2f50d2","thumbnailUrl":"https://cdn.3dassets.dev/assets/31096/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31096/v1/poster.webp","blurhash":"U99skvxZ0MNG04Rl?EofIpj]s:WB~TobIXoM","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22572,"triangles":1152,"vertices":799,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.12999999523162842,0.000004272877730710639,-0.12999999523162842],"max":[0.12999999523162842,0.35199999809265137,0.12999999523162842]},"sizeMeters":[0.26,0.352,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:03.977Z","updatedAt":"2026-09-08T10:44:04.074Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31096/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PuppetHeadSupportAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31096/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31096/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31096/v1/model.glb\" alt=\"Puppet Head Support (Abandoned Puppet Theatre and Prop Vault)\" 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/31096/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/31096/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31097","slug":"abandoned-puppet-theatre-and-prop-vault-paint-mixing-p-06e77a97","title":"Paint Mixing Palette (Abandoned Puppet Theatre and Prop Vault)","summary":"Shaped thick mixing palette with four discrete dried paint wells and softened perimeter.","description":"Shaped thick mixing palette with four discrete dried paint wells and softened perimeter. Dimensions 0.48 × 0.04 × 0.32 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-paint-mixing-p-06e77a97","cdnUrl":"https://cdn.3dassets.dev/assets/31097/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-paint-mixing-p-06e77a97","thumbnailUrl":"https://cdn.3dassets.dev/assets/31097/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31097/v1/poster.webp","blurhash":"U9A+~S%K02WXxaxZWURk01M}~AWVE2IpogxZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":17136,"triangles":848,"vertices":1006,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.23975397646427155,-0.000004553698246815424,-0.15908477908524407],"max":[0.23975397646427155,0.041999144418751216,0.15908477908524407]},"sizeMeters":[0.48,0.042,0.318],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:04.108Z","updatedAt":"2026-09-08T10:44:04.206Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31097/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PaintMixingPaletteAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31097/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31097/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31097/v1/model.glb\" alt=\"Paint Mixing Palette (Abandoned Puppet Theatre and Prop Vault)\" 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/31097/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/31097/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31098","slug":"abandoned-puppet-theatre-and-prop-vault-fine-brush-dry-e19e2544","title":"Fine Brush Drying Rack (Abandoned Puppet Theatre and Prop Vault)","summary":"Six fine brushes with slender grips, ferrules and pointed bristle tips supported across a drying rack.","description":"Six fine brushes with slender grips, ferrules and pointed bristle tips supported across a drying rack. Dimensions 0.44 × 0.40 × 0.20 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-fine-brush-dry-e19e2544","cdnUrl":"https://cdn.3dassets.dev/assets/31098/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-fine-brush-dry-e19e2544","thumbnailUrl":"https://cdn.3dassets.dev/assets/31098/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31098/v1/poster.webp","blurhash":"U4DbvI?D00N3B@wcDN9v0WE2vxwdxY_1-O0e","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":44200,"triangles":2352,"vertices":2072,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2199999988079071,0.000007730618014206714,-0.09999267501590504],"max":[0.2199999988079071,0.4015515564191395,0.09999267501590504]},"sizeMeters":[0.44,0.402,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:04.683Z","updatedAt":"2026-09-08T10:44:04.781Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31098/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FineBrushDryingRackAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31098/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31098/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31098/v1/model.glb\" alt=\"Fine Brush Drying Rack (Abandoned Puppet Theatre and Prop Vault)\" 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/31098/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/31098/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31099","slug":"abandoned-puppet-theatre-and-prop-vault-backdrop-rolle-fe3f62fd","title":"Backdrop Roller (Abandoned Puppet Theatre and Prop Vault)","summary":"Supported empty backdrop roller with end bearings and manual crank; reusable hanging scenery mechanism.","description":"Supported empty backdrop roller with end bearings and manual crank; reusable hanging scenery mechanism. Dimensions 1.84 × 0.36 × 0.26 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-backdrop-rolle-fe3f62fd","cdnUrl":"https://cdn.3dassets.dev/assets/31099/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-backdrop-rolle-fe3f62fd","thumbnailUrl":"https://cdn.3dassets.dev/assets/31099/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31099/v1/poster.webp","blurhash":"U37m$o^O9I^h~9~9weIX02t6~T9v030Ntj?F","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16632,"triangles":792,"vertices":632,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.9200000166893005,0.00004782299508718224,-0.1300118726926862],"max":[0.9200000166893005,0.3579981412870329,0.1300118726926862]},"sizeMeters":[1.84,0.358,0.26],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:04.901Z","updatedAt":"2026-09-08T10:44:05.004Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31099/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BackdropRollerAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31099/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31099/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31099/v1/model.glb\" alt=\"Backdrop Roller (Abandoned Puppet Theatre and Prop Vault)\" 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/31099/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/31099/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31100","slug":"abandoned-puppet-theatre-and-prop-vault-rolled-painted-e5b8d47f","title":"Rolled Painted Backdrop (Abandoned Puppet Theatre and Prop Vault)","summary":"Rolled fabric backdrop with layered end rims and small original abstract painted bands; separate from bare roller mechanism.","description":"Rolled fabric backdrop with layered end rims and small original abstract painted bands; separate from bare roller mechanism. Dimensions 1.44 × 0.20 × 0.20 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-rolled-painted-e5b8d47f","cdnUrl":"https://cdn.3dassets.dev/assets/31100/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-rolled-painted-e5b8d47f","thumbnailUrl":"https://cdn.3dassets.dev/assets/31100/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31100/v1/poster.webp","blurhash":"U9A,k2-p4ntQ%0^+xuIU00Ri~pahIq00Mx^+","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":55076,"triangles":2804,"vertices":2208,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.7200000286102295,-0.000022586181436495822,-0.10002258767155262],"max":[0.7200000286102295,0.20002258916166873,0.10002258767155262]},"sizeMeters":[1.44,0.2,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:06.717Z","updatedAt":"2026-09-08T10:44:06.887Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31100/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RolledPaintedBackdropAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31100/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31100/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31100/v1/model.glb\" alt=\"Rolled Painted Backdrop (Abandoned Puppet Theatre and Prop Vault)\" 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/31100/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/31100/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31101","slug":"abandoned-puppet-theatre-and-prop-vault-property-stora-20930b33","title":"Property Storage Trunk (Abandoned Puppet Theatre and Prop Vault)","summary":"General stage-property trunk with reinforced straps, shaped lid, lock plate and carrying handle; separate unpadded storage role.","description":"General stage-property trunk with reinforced straps, shaped lid, lock plate and carrying handle; separate unpadded storage role. Dimensions 0.89 × 0.48 × 0.60 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-property-stora-20930b33","cdnUrl":"https://cdn.3dassets.dev/assets/31101/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-property-stora-20930b33","thumbnailUrl":"https://cdn.3dassets.dev/assets/31101/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31101/v1/poster.webp","blurhash":"U3D8j~~B009v@:^6TUbt009KeC%F_7NM9N57","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":30340,"triangles":1812,"vertices":1263,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.4449999928474426,0.000020289524221395183,-0.3006951158284362],"max":[0.4449999928474426,0.48498510739937706,0.3006811682328709]},"sizeMeters":[0.89,0.485,0.601],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:05.773Z","updatedAt":"2026-09-08T10:44:05.872Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31101/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PropertyStorageTrunkAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31101/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31101/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31101/v1/model.glb\" alt=\"Property Storage Trunk (Abandoned Puppet Theatre and Prop Vault)\" 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/31101/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/31101/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31102","slug":"abandoned-puppet-theatre-and-prop-vault-cue-script-sta-47e82ae4","title":"Cue Script Stand (Abandoned Puppet Theatre and Prop Vault)","summary":"Weighted cue stand with enclosed stem, thick script tray, paper stack and original abstract cue lines.","description":"Weighted cue stand with enclosed stem, thick script tray, paper stack and original abstract cue lines. Dimensions 0.42 × 0.80 × 0.31 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-cue-script-sta-47e82ae4","cdnUrl":"https://cdn.3dassets.dev/assets/31102/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-cue-script-sta-47e82ae4","thumbnailUrl":"https://cdn.3dassets.dev/assets/31102/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31102/v1/poster.webp","blurhash":"UCAS}Ft601M|%hj[Mwfi~Vof4:Rk%Ls:M|NG","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54776,"triangles":2892,"vertices":2109,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.2099833744276642,0,-0.1550139673969425],"max":[0.2099833744276642,0.8009941747464554,0.1550139673969425]},"sizeMeters":[0.42,0.801,0.31],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:06.523Z","updatedAt":"2026-09-08T10:44:06.636Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31102/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CueScriptStandAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31102/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31102/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31102/v1/model.glb\" alt=\"Cue Script Stand (Abandoned Puppet Theatre and Prop Vault)\" 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/31102/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/31102/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31103","slug":"abandoned-puppet-theatre-and-prop-vault-theatre-floor--89cb62c0","title":"Theatre Floor Base (Abandoned Puppet Theatre and Prop Vault)","summary":"Compact theatre foundation with individual broad timber floorboards and continuous supported perimeter.","description":"Compact theatre foundation with individual broad timber floorboards and continuous supported perimeter. Dimensions 11.00 × 0.18 × 9.00 m (X × Y × Z). Metre units, +Y up, +Z front; origin on the ground at the footprint centre unless stated. Original faded theatrical craft. Static puppets and machinery; no animation, audio or structural certification. Static geometry; no rig, animation, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault-theatre-floor--89cb62c0","cdnUrl":"https://cdn.3dassets.dev/assets/31103/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault-theatre-floor--89cb62c0","thumbnailUrl":"https://cdn.3dassets.dev/assets/31103/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31103/v1/poster.webp","blurhash":"U7Bfd_%M02n}$yxYaiR+00M{~9R+ESEOW,t3","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"slug":"stylized","title":"Stylized"},{"slug":"modular","title":"Modular"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":122164,"triangles":6900,"vertices":4923,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-5.5,0.00010254040370000217,-4.500274666585284],"max":[5.5,0.1817327455531111,4.500274666585284]},"sizeMeters":[11,0.182,9.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:06.536Z","updatedAt":"2026-09-08T10:44:06.654Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31103/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function TheatreFloorBaseAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31103/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31103/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31103/v1/model.glb\" alt=\"Theatre Floor Base (Abandoned Puppet Theatre and Prop Vault)\" 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/31103/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/31103/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"31107","slug":"abandoned-puppet-theatre-and-prop-vault--2f0ce2ea-starter-scene","title":"Quiet Puppet Theatre (Abandoned Puppet Theatre and Prop Vault)","summary":"Intact framed theatre with transparent supported front roof panels, furnished audience facing the raised puppet stage, connected scenery track and sheltered backstage repair and storage.","description":"Intact framed theatre with transparent supported front roof panels, furnished audience facing the raised puppet stage, connected scenery track and sheltered backstage repair and storage.","status":"published","url":"https://3dassets.dev/assets/abandoned-puppet-theatre-and-prop-vault--2f0ce2ea-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/31107/v1/model.glb","downloadUrl":"https://3dassets.dev/download/abandoned-puppet-theatre-and-prop-vault--2f0ce2ea-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/31107/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/31107/v1/poster.webp","blurhash":"U3D9Fu~W01?bRQ-nxtIW009ZMI4UM^ICoiOq","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"fantasy","title":"Fantasy"},{"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":3278868,"triangles":201764,"vertices":146412,"meshes":162,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-5.5,0.00010254040370000217,-4.500274666585284],"max":[5.5,4.121816275592722,4.500274666585284]},"sizeMeters":[11,4.122,9.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"GPT-6","downloads":0,"publishedAt":"2026-09-08T10:44:09.634Z","updatedAt":"2026-09-08T10:44:09.743Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/31107/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuietPuppetTheatreAbandonedPuppetTheatreAndPropVault(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/31107/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/31107/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/31107/v1/model.glb\" alt=\"Quiet Puppet Theatre (Abandoned Puppet Theatre and Prop Vault)\" 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/31107/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/31107/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":null}}