{"data":{"id":336,"slug":"shipyard-and-dry-dock","title":"Shipyard and Dry Dock","summary":"A working graving dock and shipyard: a hull in bow, midbody and stern modules on keel blocks, a swinging gate caisson, a gantry striding the dock, jib and crawler cranes, a fabrication shed of plate machinery, staging, blocks, shores and yard plant.","description":"A modern industrial ship repair yard in one coherent realistic family, built so a developer can assemble a dock rather than dress one. The graving dock is the centre: ported 4 m bottom slabs, stepped altar wall sections whose copings sit level with the apron, an access stair tower, and a 16 m steel gate caisson whose leaf swings off its concrete quoin to open the dock to the basin. The ship is three lofted hull modules that bolt end to end at their primer section faces, a bulbous bow, a parallel midbody and a stern with a transom and a stern tube boss, held up on built keel blocks and wedged bilge blocks with adjustable shores to the dock sides, and its rudder and propeller are drawn and stood on the bottom beside it. Lifting is a rail mounted portal gantry striding the dock with a traversing crab, a pillar jib crane, a crawler crane and a shed travelling crane, each with a hook that hoists with the part that carries it. The fabrication shed is ported bays, a roller shutter gable and roof cassettes over a plate roller, press brake, profile cutting table, welding bay, grinder and fitters bench, with plate stacks, plate and pipe racks, gas, air, power, blasting, washing and spraying plant on the apron outside. The yard is finished with cabins, a store container, boundary panels, floodlight masts, safety kit, a slipway, a launch cradle, a work boat and a harbour tug, and 4 m water and apron tiles to lay the ground. Animation is rigid node transforms only: the gate swings, crabs traverse, hooks hoist, the jib and crawler slew, the shutter rolls, cabin, container and store doors open, the ram strokes, the cutting gantry travels, the man basket lifts, and rolls, grinding wheels, reels, the propeller and the thruster impeller spin. Wire rope, hoses, welding leads, cables, chains, curtains, water, spark and flame are modelled solid and stay still, because flexible material, fluid and fire need a joint per element or a shader and neither is reachable with a rigid node transform. No people and no skinning anywhere. No shipyard, shipping line, shipbuilder, classification society or equipment maker is named or depicted, no real vessel is reproduced, and every hull name board, plate, sign, muster board and container marking is left blank.","url":"https://3dassets.dev/packs/shipyard-and-dry-dock","coverUrl":"https://cdn.3dassets.dev/assets/37971/v1/poster.webp","assetCount":61,"aiGenerated":true,"aiGeneratedAssetCount":61,"aiModels":["Claude Opus 5"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":3312760,"totalTriangles":53956,"starterScene":{"id":"37971","slug":"shipyard-and-dry-dock-shipyard-and-dry-d-68bbd49e-starter-scene","title":"Graving dock with a hull in three sections (Shipyard and Dry Dock)","summary":"A working shipyard seen from its dock side: a 16 m graving dock pumped dry, its stepped altar walls running back to the head and its steel gate caisson closed against the basin. A hull sits on the blocks in it, made up of a stern module with its rudder and propeller drawn and...","description":"A working shipyard seen from its dock side: a 16 m graving dock pumped dry, its stepped altar walls running back to the head and its steel gate caisson closed against the basin. A hull sits on the blocks in it, made up of a stern module with its rudder and propeller drawn and stood beside it, a parallel midbody and a bulbous bow, with shores wedged to the dock sides, staging towers and scaffold runs along the plating and an access stair down to the bottom. A portal gantry strides the dock on rails, a pillar jib crane works the quay and a crawler crane stands on the east apron beside the fabrication shed, which is roofed at its ends and holds the plate roller, press brake, cutting table, welding bay, grinder and benches under its own travelling crane. Plate stacks, racks, gas, air, power and blasting plant fill the apron between them, the yard cabins and the store stand on the west side, and a work boat waits on its cradle by the slipway while a tug lies off the gate.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-d-68bbd49e-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/37971/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-d-68bbd49e-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/37971/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37971/v1/poster.webp","blurhash":"U5A^Uax]00ITV@RPIUW=00sm~paf-;%h%goH","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1207584,"triangles":23630,"vertices":53610,"meshes":377,"materials":12,"textures":1,"animations":[],"boundingBox":{"min":[-19,-6.200100709591155,-26],"max":[22.001199960708618,16.999935940936243,30.30015256971182]},"sizeMeters":[41.001,23.2,56.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:14.113Z","updatedAt":"2026-09-12T06:06:14.570Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37971/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GravingDockWithAHullInThreeSectionsShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37971/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37971/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37971/v1/model.glb\" alt=\"Graving dock with a hull in three sections (Shipyard and Dry Dock)\" 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/37971/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/37971/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"37913","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-basin-wate-e1281dc5","title":"Basin water tile, 4 m (Shipyard and Dry Dock)","summary":"Flat harbour basin tile 4 m square and 0.14 m thick in dark green dock water, for filling the approach outside a dock gate. Laid at y=-0.14 its surface sits exactly on y=0, level with the quay the yard works from.","description":"Flat harbour basin tile 4 m square and 0.14 m thick in dark green dock water, for filling the approach outside a dock gate. Laid at y=-0.14 its surface sits exactly on y=0, level with the quay the yard works from. Overall 4.00 by 0.14 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the tile's footprint; lay a grid of them at y=-0.14 so the water surface is the world's zero plane. Static surface: the water is a flat plate with no waves, ripple or transparency animation, because a rigid node transform cannot make a sea and a GLB ships no shader. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-basin-wate-e1281dc5","cdnUrl":"https://cdn.3dassets.dev/assets/37913/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-basin-wate-e1281dc5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37913/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37913/v1/poster.webp","blurhash":"U47LlsyE00W9yEaeV?kC00R4.TafHrkWogV@","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":1760,"triangles":12,"vertices":28,"meshes":1,"materials":1,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.00007049745886633652,-2],"max":[2,0.14007049805491278,2]},"sizeMeters":[4,0.14,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:40.289Z","updatedAt":"2026-09-12T06:05:40.424Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37913/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BasinWaterTile4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37913/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37913/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37913/v1/model.glb\" alt=\"Basin water tile, 4 m (Shipyard and Dry Dock)\" 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/37913/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/37913/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37915","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-yard-apron-dcf38f0e","title":"Yard apron slab, 4 m (Shipyard and Dry Dock)","summary":"Heavy duty concrete apron slab 4 m square with a recessed movement joint and a cast in tie down pocket, for the dock side a shipyard works from. Ports on all four edges so an apron tiles to any size.","description":"Heavy duty concrete apron slab 4 m square with a recessed movement joint and a cast in tie down pocket, for the dock side a shipyard works from. Ports on all four edges so an apron tiles to any size. Overall 4.00 by 0.15 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the slab's footprint; lay slabs at y=-0.14 so the apron surface is y=0. Static modular piece. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-apron-dcf38f0e","cdnUrl":"https://cdn.3dassets.dev/assets/37915/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-apron-dcf38f0e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37915/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37915/v1/poster.webp","blurhash":"U6Ci~;%g00jF%MWBRjoz00IU~qR*D%t7ofM{","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":50632,"triangles":36,"vertices":84,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.00007049745886633652,-2],"max":[2,0.14590103179989478,2]},"sizeMeters":[4,0.146,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:40.284Z","updatedAt":"2026-09-12T06:05:40.436Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37915/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YardApronSlab4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37915/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37915/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37915/v1/model.glb\" alt=\"Yard apron slab, 4 m (Shipyard and Dry Dock)\" 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/37915/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/37915/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37912","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-yard-apron-d3c42c7a","title":"Yard apron slab with hazard hatching (Shipyard and Dry Dock)","summary":"The same 4 m apron slab marked as a keep clear zone: yellow hatching across the full slab between two edge lines, for the swing area under a crane or the ground in front of a shed door.","description":"The same 4 m apron slab marked as a keep clear zone: yellow hatching across the full slab between two edge lines, for the swing area under a crane or the ground in front of a shed door. Overall 5.40 by 0.15 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. Static modular piece; the markings are painted geometry a few millimetres proud of the slab. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-apron-d3c42c7a","cdnUrl":"https://cdn.3dassets.dev/assets/37912/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-apron-d3c42c7a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37912/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37912/v1/poster.webp","blurhash":"UAC6x%xv00adxsazR+j?00Rh~oa$E3s.t3WC","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":53648,"triangles":108,"vertices":240,"meshes":2,"materials":2,"textures":1,"animations":[],"boundingBox":{"min":[-2.6985418796539307,-0.00007049745886633652,-2],"max":[2.6985418796539307,0.14795306409612605,2]},"sizeMeters":[5.397,0.148,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:40.266Z","updatedAt":"2026-09-12T06:05:40.419Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37912/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YardApronSlabWithHazardHatchingShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37912/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37912/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37912/v1/model.glb\" alt=\"Yard apron slab with hazard hatching (Shipyard and Dry Dock)\" 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/37912/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/37912/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37914","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-f-11e266ba","title":"Graving dock floor tile, 4 m (Shipyard and Dry Dock)","summary":"Dock bottom slab 4 m square and 0.2 m thick with a drainage channel down one edge and a cast grating over the culvert, for the floor of a graving dock. Ports on all four edges so a dock floor runs to any length.","description":"Dock bottom slab 4 m square and 0.2 m thick with a drainage channel down one edge and a cast grating over the culvert, for the floor of a graving dock. Ports on all four edges so a dock floor runs to any length. Overall 4.00 by 0.24 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the tile's footprint; a 6 m dock lays them at y=-6.2 so the dock bottom is y=-6. Static modular piece; the culvert grating is modelled solid and does not lift. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-f-11e266ba","cdnUrl":"https://cdn.3dassets.dev/assets/37914/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-f-11e266ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/37914/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37914/v1/poster.webp","blurhash":"U7CZbD%M00j?%MWBaxt600M{~qRkD%t7WBIV","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":54724,"triangles":120,"vertices":280,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.00010070959115467126,-2],"max":[2,0.23996642855691724,2.001199960708618]},"sizeMeters":[4,0.24,4.001],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:40.282Z","updatedAt":"2026-09-12T06:05:40.421Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37914/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GravingDockFloorTile4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37914/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37914/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37914/v1/model.glb\" alt=\"Graving dock floor tile, 4 m (Shipyard and Dry Dock)\" 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/37914/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/37914/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37917","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-a-d2030ec1","title":"Dry dock altar wall section, 4 m (Shipyard and Dry Dock)","summary":"Stepped dock wall 4 m long and 6 m tall: four concrete altars a shore can be set on, a galvanised lip angle at the coping, a yellow edge line and a recessed rung ladder. Ports at both ends so a dock side runs to any length.","description":"Stepped dock wall 4 m long and 6 m tall: four concrete altars a shore can be set on, a galvanised lip angle at the coping, a yellow edge line and a recessed rung ladder. Ports at both ends so a dock side runs to any length. Overall 4.00 by 6.50 by 2.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the wall's footprint with the altars facing +Z; stand it at y=-6 so its coping is level with a y=0 apron and its foot meets the dock floor. Static modular piece; the ladder rungs are modelled solid. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-a-d2030ec1","cdnUrl":"https://cdn.3dassets.dev/assets/37917/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-a-d2030ec1","thumbnailUrl":"https://cdn.3dassets.dev/assets/37917/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37917/v1/poster.webp","blurhash":"U4EV+.~q0000IVRkfPj;009F~q-:R.-;xu9F","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":59328,"triangles":216,"vertices":484,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2.000122074037904,0,-0.999877925962096],"max":[2.000122074037904,6.499947573015417,0.999877925962096]},"sizeMeters":[4,6.5,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:43.083Z","updatedAt":"2026-09-12T06:05:43.195Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37917/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DryDockAltarWallSection4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37917/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37917/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37917/v1/model.glb\" alt=\"Dry dock altar wall section, 4 m (Shipyard and Dry Dock)\" 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/37917/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/37917/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37916","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-s-4402cab7","title":"Dry dock access stair tower (Shipyard and Dry Dock)","summary":"Bolted steel stair tower 6 m tall with two flights, a half landing and a top landing at dock level, yellow topped handrails throughout and a kick plate, for getting down the altar wall of a graving dock on foot.","description":"Bolted steel stair tower 6 m tall with two flights, a half landing and a top landing at dock level, yellow topped handrails throughout and a kick plate, for getting down the altar wall of a graving dock on foot. Overall 2.90 by 7.25 by 3.13 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the tower's footprint on the dock bottom; stand it at y=-6 in a 6 m dock and the top landing meets a y=0 apron. Static structure; nothing on it moves. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-s-4402cab7","cdnUrl":"https://cdn.3dassets.dev/assets/37916/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-dry-dock-s-4402cab7","thumbnailUrl":"https://cdn.3dassets.dev/assets/37916/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37916/v1/poster.webp","blurhash":"UBBDTY%L00D%~mxZ9IM~VpxakYIVxtofR-Rk","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":23884,"triangles":480,"vertices":1120,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.449861892317381,0,-1.351114255903143],"max":[1.451200008392334,7.25,1.7799732408139524]},"sizeMeters":[2.901,7.25,3.131],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:43.034Z","updatedAt":"2026-09-12T06:05:43.138Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37916/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function DryDockAccessStairTowerShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37916/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37916/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37916/v1/model.glb\" alt=\"Dry dock access stair tower (Shipyard and Dry Dock)\" 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/37916/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/37916/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37918","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-dock-gate--00453666","title":"Dock gate caisson, 16 m (Shipyard and Dry Dock)","summary":"Steel dock gate closing a 16 m graving dock: a plated box caisson on a concrete quoin, with vertical stiffeners, timber seating faces, flooding valve wheels and a railed walkway across its top. The leaf swings off the quoin to open the dock.","description":"Steel dock gate closing a 16 m graving dock: a plated box caisson on a concrete quoin, with vertical stiffeners, timber seating faces, flooding valve wheels and a railed walkway across its top. The leaf swings off the quoin to open the dock. Overall 18.60 by 8.30 by 2.20 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the sill on the dock bottom; stand it at y=-6 in a 6 m dock and the walkway sits 0.6 m proud of a y=0 apron. The seating timbers, the sealing faces and the culvert pipework are modelled solid: sealing is a squeeze, not a joint, and nothing rigid can express it. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-dock-gate--00453666","cdnUrl":"https://cdn.3dassets.dev/assets/37918/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-dock-gate--00453666","thumbnailUrl":"https://cdn.3dassets.dev/assets/37918/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37918/v1/poster.webp","blurhash":"UBF5]Us:01WBt$~qVxD*00bq?bRUMgR3xoNh","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":73900,"triangles":684,"vertices":1550,"meshes":41,"materials":7,"textures":1,"animations":["open","close"],"boundingBox":{"min":[-9.300000190734863,-0.00037850130720151753,-1.0997650535789092],"max":[9.300000190734863,8.300000190734863,1.0997650535789092]},"sizeMeters":[18.6,8.3,2.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:42.099Z","updatedAt":"2026-09-12T06:05:42.212Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37918/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function DockGateCaisson16MShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37918/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37918/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37918/v1/model.glb\" alt=\"Dock gate caisson, 16 m (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37918/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37918/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37919","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-slipway-se-c9454f46","title":"Slipway section with keel ways, 4 m (Shipyard and Dry Dock)","summary":"Concrete slipway bay 4 m square falling 0.35 m across its length, with two greased timber keel ways, a side kerb and a cast anchor eye, for running a cradle down to the water. Ports at both ends so a slipway runs to the waterline.","description":"Concrete slipway bay 4 m square falling 0.35 m across its length, with two greased timber keel ways, a side kerb and a cast anchor eye, for running a cradle down to the water. Ports at both ends so a slipway runs to the waterline. Overall 4.00 by 0.81 by 4.02 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the bay's footprint, the fall running toward +Z; lay it at y=-0.49 so its high edge is level with a y=0 apron and its low edge runs on into the water. Static modular piece; the keel ways are modelled solid and do not slide. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-slipway-se-c9454f46","cdnUrl":"https://cdn.3dassets.dev/assets/37919/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-slipway-se-c9454f46","thumbnailUrl":"https://cdn.3dassets.dev/assets/37919/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37919/v1/poster.webp","blurhash":"U4A0]:_M9FjvE1%M%MM{00D%D%IT?G9FD%-;","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":53192,"triangles":72,"vertices":158,"meshes":3,"materials":3,"textures":1,"animations":[],"boundingBox":{"min":[-2.000007534323968,0.00002296486179415025,-2.0098214149475098],"max":[2.000007534323968,0.813593668553428,2.0098214149475098]},"sizeMeters":[4,0.814,4.02],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:43.099Z","updatedAt":"2026-09-12T06:05:43.212Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37919/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SlipwaySectionWithKeelWays4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37919/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37919/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37919/v1/model.glb\" alt=\"Slipway section with keel ways, 4 m (Shipyard and Dry Dock)\" 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/37919/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/37919/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37920","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-quay-edge--4110586f","title":"Quay edge slab, 4 m (Shipyard and Dry Dock)","summary":"Quay coping slab 4 m square with a galvanised edge angle over the water, a yellow safety line set back from the lip and two recessed tie down pockets. Ports at both ends so a quay runs to any length.","description":"Quay coping slab 4 m square with a galvanised edge angle over the water, a yellow safety line set back from the lip and two recessed tie down pockets. Ports at both ends so a quay runs to any length. Overall 4.00 by 0.19 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the slab's footprint with the water side toward +Z; lay slabs at y=-0.14 so the quay surface is y=0. Static modular piece. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-quay-edge--4110586f","cdnUrl":"https://cdn.3dassets.dev/assets/37920/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-quay-edge--4110586f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37920/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37920/v1/poster.webp","blurhash":"U7Ci~.%M00M|xuayfiof00Io~qocD%ofRkNG","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":52404,"triangles":60,"vertices":140,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-2,-0.00007049745886633652,-2],"max":[2,0.18990310283834405,2.000110767884283]},"sizeMeters":[4,0.19,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:44.970Z","updatedAt":"2026-09-12T06:05:45.106Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37920/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuayEdgeSlab4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37920/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37920/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37920/v1/model.glb\" alt=\"Quay edge slab, 4 m (Shipyard and Dry Dock)\" 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/37920/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/37920/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37921","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-yard-bound-98c45921","title":"Yard boundary wall panel, 4 m (Shipyard and Dry Dock)","summary":"Precast site boundary panel 4 m long and 2.4 m tall in a galvanised post channel, with a blue banded top rail and a blank sign plate for a yard to letter itself. Ports at both ends so a boundary runs to any length.","description":"Precast site boundary panel 4 m long and 2.4 m tall in a galvanised post channel, with a blue banded top rail and a blank sign plate for a yard to letter itself. Ports at both ends so a boundary runs to any length. Overall 4.00 by 2.46 by 0.33 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the panel's footprint, the lettered face toward +Z. Static modular piece; the sign plate is blank so a project can letter it. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-bound-98c45921","cdnUrl":"https://cdn.3dassets.dev/assets/37921/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-bound-98c45921","thumbnailUrl":"https://cdn.3dassets.dev/assets/37921/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37921/v1/poster.webp","blurhash":"UDFifJ?b00-;lA_N%1IU00Iq_2VrRiXTNHVr","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":52984,"triangles":72,"vertices":168,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-2.001199960708618,-0.00005953493533605858,-0.14989882730743173],"max":[2.001199960708618,2.461100961056384,0.17989882849952463]},"sizeMeters":[4.002,2.461,0.33],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:45.818Z","updatedAt":"2026-09-12T06:05:46.008Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37921/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YardBoundaryWallPanel4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37921/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37921/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37921/v1/model.glb\" alt=\"Yard boundary wall panel, 4 m (Shipyard and Dry Dock)\" 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/37921/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/37921/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37922","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-7513f519","title":"Hull section, parallel midbody (Shipyard and Dry Dock)","summary":"A 10 m midbody section of a 9 m beam hull: plated shell in antifouling red below the waterline and blue topside above, a decked bulwark with a hatch and mooring bitts, and bare primer section faces at both ends so modules bolt end to end.","description":"A 10 m midbody section of a 9 m beam hull: plated shell in antifouling red below the waterline and blue topside above, a decked bulwark with a hatch and mooring bitts, and bare primer section faces at both ends so modules bolt end to end. Overall 9.00 by 8.00 by 10.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the keel at the middle of the section; it rests on y=0 so it can be set straight onto keel blocks, and the two section faces are the joints to the bow and stern modules. Static structure: the shell, the bulwark and the hatch cover are modelled solid, and no part of a hull plate is a mechanism. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-7513f519","cdnUrl":"https://cdn.3dassets.dev/assets/37922/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-7513f519","thumbnailUrl":"https://cdn.3dassets.dev/assets/37922/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37922/v1/poster.webp","blurhash":"UOGuE[};8_IuysNHIBxY4-ERI?s,U^R*s.kD","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":13684,"triangles":182,"vertices":404,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-4.500106814783166,-0.00003352267670786446,-5],"max":[4.500106814783166,8.000050403224352,5]},"sizeMeters":[9,8,10],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:44.953Z","updatedAt":"2026-09-12T06:05:45.092Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37922/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HullSectionParallelMidbodyShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37922/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37922/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37922/v1/model.glb\" alt=\"Hull section, parallel midbody (Shipyard and Dry Dock)\" 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/37922/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/37922/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37923","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-2b298b4c","title":"Hull section, bow with bulbous forefoot (Shipyard and Dry Dock)","summary":"The forward 13 m of a 9 m beam hull: a raked stem, flared blue topsides, a bulbous forefoot in antifouling red, a bulwarked forecastle with bitts and a bare primer section face aft so it bolts to a midbody module.","description":"The forward 13 m of a 9 m beam hull: a raked stem, flared blue topsides, a bulbous forefoot in antifouling red, a bulwarked forecastle with bitts and a bare primer section face aft so it bolts to a midbody module. Overall 9.00 by 9.40 by 12.68 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the keel at the aft section face; it rests on y=0, and the forefoot rises forward the way a real rise of floor does, so the forward keel blocks sit lower than the bulb. Static structure: the shell and the bulb are modelled solid and nothing on a bow section is a mechanism. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-2b298b4c","cdnUrl":"https://cdn.3dassets.dev/assets/37923/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-2b298b4c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37923/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37923/v1/poster.webp","blurhash":"UEBphND$00kU.mM_D%%18^t8tmtRUuo}x[X9","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":23960,"triangles":382,"vertices":961,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-4.500065524078876,-0.0001602221747489807,-5.000257875444608],"max":[4.500065524078876,9.400009296980674,7.67764139175415]},"sizeMeters":[9,9.4,12.678],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:46.025Z","updatedAt":"2026-09-12T06:05:46.148Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37923/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HullSectionBowWithBulbousForefootShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37923/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37923/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37923/v1/model.glb\" alt=\"Hull section, bow with bulbous forefoot (Shipyard and Dry Dock)\" 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/37923/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/37923/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37924","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-3ad89498","title":"Hull section, stern with transom (Shipyard and Dry Dock)","summary":"The after 10 m of a 9 m beam hull: a rising run, a flat transom, a deadwood skeg and a stern tube boss cut for a shaft, with a bulwarked poop and a bare primer section face forward so it bolts to a midbody module.","description":"The after 10 m of a 9 m beam hull: a rising run, a flat transom, a deadwood skeg and a stern tube boss cut for a shaft, with a bulwarked poop and a bare primer section face forward so it bolts to a midbody module. Overall 9.00 by 8.45 by 10.15 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the keel at the forward section face; it rests on y=0, and the run rises aft so the after keel blocks are shorter than the midbody's. Static structure: the shell, the skeg and the stern tube boss are modelled solid; the shaft and propeller are a separate model. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-3ad89498","cdnUrl":"https://cdn.3dassets.dev/assets/37924/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-secti-3ad89498","thumbnailUrl":"https://cdn.3dassets.dev/assets/37924/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37924/v1/poster.webp","blurhash":"UTF=N~}?9ENft-NaMxxa4.E3S$s,Mcadt7fS","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":21752,"triangles":354,"vertices":836,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-4.500106814783166,-0.0001602221747489807,-5.150000095367432],"max":[4.500106814783166,8.450276907789778,5.000225825049194]},"sizeMeters":[9,8.45,10.15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:47.733Z","updatedAt":"2026-09-12T06:05:47.861Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37924/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HullSectionSternWithTransomShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37924/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37924/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37924/v1/model.glb\" alt=\"Hull section, stern with transom (Shipyard and Dry Dock)\" 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/37924/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/37924/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37925","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-rudder-and-7fe7b595","title":"Rudder and stock on a stand (Shipyard and Dry Dock)","summary":"A semi balanced spade rudder 3.4 m deep and 2.4 m in chord, drawn and stood on a wheeled dock stand: plated blade in antifouling red, a bare steel stock through the palm and a lifting eye at the head.","description":"A semi balanced spade rudder 3.4 m deep and 2.4 m in chord, drawn and stood on a wheeled dock stand: plated blade in antifouling red, a bare steel stock through the palm and a lifting eye at the head. Overall 2.20 by 6.63 by 2.40 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the stand's footprint; it rests on y=0 so it stands on a dock bottom or an apron. Static assembly: the rudder is drawn and stood up, so the blade does not turn on its stock here. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-rudder-and-7fe7b595","cdnUrl":"https://cdn.3dassets.dev/assets/37925/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-rudder-and-7fe7b595","thumbnailUrl":"https://cdn.3dassets.dev/assets/37925/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37925/v1/poster.webp","blurhash":"U5A+Nv}Y000#15NH]}-T39Aq{h|_r]xGoxEz","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":18784,"triangles":360,"vertices":799,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.100000023841858,0,-1.1999847562100543],"max":[1.100000023841858,6.635000228881836,1.1999847562100543]},"sizeMeters":[2.2,6.635,2.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:46.738Z","updatedAt":"2026-09-12T06:05:46.842Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37925/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RudderAndStockOnAStandShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37925/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37925/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37925/v1/model.glb\" alt=\"Rudder and stock on a stand (Shipyard and Dry Dock)\" 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/37925/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/37925/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37926","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-propeller--0590f916","title":"Propeller and tailshaft in a cradle (Shipyard and Dry Dock)","summary":"A four bladed fixed pitch propeller 3.2 m in diameter on its drawn tailshaft, cradled on timber bearers for survey: pitched blades on a bossed hub, a keyed taper, a rope guard ring and a cone nut.","description":"A four bladed fixed pitch propeller 3.2 m in diameter on its drawn tailshaft, cradled on timber bearers for survey: pitched blades on a bossed hub, a keyed taper, a rope guard ring and a cone nut. Overall 3.44 by 3.57 by 5.23 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the cradle's footprint with the shaft along Z; it rests on y=0 so it stands on a dock bottom or an apron. The cradle and the timber bearers are modelled solid; only the propeller and its shaft turn, and they turn in the cradle rather than driving anything. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-propeller--0590f916","cdnUrl":"https://cdn.3dassets.dev/assets/37926/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-propeller--0590f916","thumbnailUrl":"https://cdn.3dassets.dev/assets/37926/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37926/v1/poster.webp","blurhash":"UDD*@G}q57pI5qE2Rjg402WX=_Ioivkqxu,.","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":20208,"triangles":344,"vertices":739,"meshes":9,"materials":3,"textures":0,"animations":["spin"],"boundingBox":{"min":[-1.7200000286102295,-0.00007902455365549343,-3.200000047683716],"max":[1.7200000286102295,3.56999990940094,2.0299999713897705]},"sizeMeters":[3.44,3.57,5.23],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:47.624Z","updatedAt":"2026-09-12T06:05:47.744Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37926/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function PropellerAndTailshaftInACradleShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37926/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37926/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37926/v1/model.glb\" alt=\"Propeller and tailshaft in a cradle (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37926/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37926/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37927","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-bow-thrust-778f84b5","title":"Bow thruster tunnel unit (Shipyard and Dry Dock)","summary":"A 2.2 m bore thruster tunnel section on a transport stillage, ready to be let into a bow: plated tunnel with flanged ends, a grid over each mouth, the impeller and its gear leg inside, and lifting eyes on the frame.","description":"A 2.2 m bore thruster tunnel section on a transport stillage, ready to be let into a bow: plated tunnel with flanged ends, a grid over each mouth, the impeller and its gear leg inside, and lifting eyes on the frame. Overall 3.20 by 3.90 by 2.83 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the stillage's footprint with the tunnel bore along X; it rests on y=0, and the flange faces are where it welds into a shell plate. The gear leg, the hydraulic pipework and the grids are modelled solid; only the impeller turns. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-bow-thrust-778f84b5","cdnUrl":"https://cdn.3dassets.dev/assets/37927/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-bow-thrust-778f84b5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37927/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37927/v1/poster.webp","blurhash":"U4D[qY_2008w7%=}[99Z00v}tmGHHXvzysBD","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":27192,"triangles":484,"vertices":1060,"meshes":9,"materials":4,"textures":0,"animations":["spin"],"boundingBox":{"min":[-1.6001006910026532,0,-1.4135624078732623],"max":[1.6001006910026532,3.899944536478645,1.4135624078732623]},"sizeMeters":[3.2,3.9,2.827],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:47.793Z","updatedAt":"2026-09-12T06:05:47.899Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37927/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function BowThrusterTunnelUnitShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37927/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37927/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37927/v1/model.glb\" alt=\"Bow thruster tunnel unit (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37927/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37927/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37928","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-hull-plate-6bff0d48","title":"Hull plate stack on bearers (Shipyard and Dry Dock)","summary":"A stack of eight cut shell plates 3 m by 1.8 m lying on timber bearers in shop primer, edges prepared and a bare steel corner where the heat number would be stamped, for the plate yard beside a fabrication shed.","description":"A stack of eight cut shell plates 3 m by 1.8 m lying on timber bearers in shop primer, edges prepared and a bare steel corner where the heat number would be stamped, for the plate yard beside a fabrication shed. Overall 3.20 by 0.57 by 1.80 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the stack's footprint; it rests on y=0. Static stack; the plates do not lift off. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-plate-6bff0d48","cdnUrl":"https://cdn.3dassets.dev/assets/37928/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-hull-plate-6bff0d48","thumbnailUrl":"https://cdn.3dassets.dev/assets/37928/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37928/v1/poster.webp","blurhash":"U9D8qC%20MR*}?-VNcI:00n$}?Nc0N9tsm$%","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":9232,"triangles":144,"vertices":336,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.600000023841858,-0.00008057184644943982,-0.9000225724032173],"max":[1.600000023841858,0.5720121609103048,0.9000225724032173]},"sizeMeters":[3.2,0.572,1.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:48.488Z","updatedAt":"2026-09-12T06:05:48.666Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37928/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HullPlateStackOnBearersShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37928/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37928/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37928/v1/model.glb\" alt=\"Hull plate stack on bearers (Shipyard and Dry Dock)\" 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/37928/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/37928/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37929","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-keel-block-706cf9a4","title":"Keel block (Shipyard and Dry Dock)","summary":"A built up keel block 1.2 m tall on a 1.4 m concrete base: cross laid oak timbers under a softwood capping piece, with a steel banding strap, for taking a ship's keel on a dock bottom.","description":"A built up keel block 1.2 m tall on a 1.4 m concrete base: cross laid oak timbers under a softwood capping piece, with a steel banding strap, for taking a ship's keel on a dock bottom. Overall 1.50 by 1.20 by 1.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base; it rests on y=0, and its capping face is 1.2 m up. Static block; nothing on it moves. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-keel-block-706cf9a4","cdnUrl":"https://cdn.3dassets.dev/assets/37929/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-keel-block-706cf9a4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37929/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37929/v1/poster.webp","blurhash":"U9F}vG~V02Ip*dM_5qxb0ME24.r?LNo#^*xH","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":52836,"triangles":84,"vertices":196,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.75,0.0000018382631259417082,-0.75],"max":[0.75,1.2000030750701465,0.75]},"sizeMeters":[1.5,1.2,1.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:50.422Z","updatedAt":"2026-09-12T06:05:50.524Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37929/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function KeelBlockShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37929/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37929/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37929/v1/model.glb\" alt=\"Keel block (Shipyard and Dry Dock)\" 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/37929/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/37929/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37931","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-bilge-bloc-0129bbb4","title":"Bilge block with sloped cap (Shipyard and Dry Dock)","summary":"A bilge block 1.35 m tall with a wedged oak cap set to the turn of the bilge, on a concrete base with a sliding sole plate and a tipping eye, for supporting a hull off its centreline.","description":"A bilge block 1.35 m tall with a wedged oak cap set to the turn of the bilge, on a concrete base with a sliding sole plate and a tipping eye, for supporting a hull off its centreline. Overall 1.40 by 1.45 by 1.40 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base; it rests on y=0, the wedge falling away from the ship's side, so the pair are set with the slope facing the centreline. Static block; the wedge is modelled solid in one setting. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-bilge-bloc-0129bbb4","cdnUrl":"https://cdn.3dassets.dev/assets/37931/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-bilge-bloc-0129bbb4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37931/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37931/v1/poster.webp","blurhash":"U8FOW6~V01NLujD*Acr[0#E3D$,:7hXm~V-p","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":53624,"triangles":84,"vertices":192,"meshes":4,"materials":4,"textures":1,"animations":[],"boundingBox":{"min":[-0.699999988079071,0.00003205294935335057,-0.699999988079071],"max":[0.699999988079071,1.4477117199589546,0.699999988079071]},"sizeMeters":[1.4,1.448,1.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:49.686Z","updatedAt":"2026-09-12T06:05:49.839Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37931/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function BilgeBlockWithSlopedCapShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37931/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37931/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37931/v1/model.glb\" alt=\"Bilge block with sloped cap (Shipyard and Dry Dock)\" 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/37931/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/37931/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37930","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-shoring-pr-1d59855a","title":"Adjustable shoring prop (Shipyard and Dry Dock)","summary":"A raking steel shore 4.4 m long with a screw jack head, a pinned telescopic body, a hinged sole plate and a safety chain eye, for wedging a hull off the altar steps of a graving dock.","description":"A raking steel shore 4.4 m long with a screw jack head, a pinned telescopic body, a hinged sole plate and a safety chain eye, for wedging a hull off the altar steps of a graving dock. Overall 0.50 by 3.27 by 2.55 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the sole plate; it rests on y=0 and rakes toward +Z, so a pair are placed facing each other across a hull. Static prop: the screw jack is modelled at one setting and the safety chain is solid, because a chain needs a joint per link. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-shoring-pr-1d59855a","cdnUrl":"https://cdn.3dassets.dev/assets/37930/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-shoring-pr-1d59855a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37930/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37930/v1/poster.webp","blurhash":"U67wNSxs02MztP={r?0g4:jr?GW=V@9uS$~B","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":5588,"triangles":84,"vertices":196,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.2500768048495439,0,-0.30007368704639426],"max":[0.2500768048495439,3.272470712661743,2.2521278896030044]},"sizeMeters":[0.5,3.272,2.552],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:49.502Z","updatedAt":"2026-09-12T06:05:49.704Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37930/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AdjustableShoringPropShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37930/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37930/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37930/v1/model.glb\" alt=\"Adjustable shoring prop (Shipyard and Dry Dock)\" 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/37930/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/37930/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37932","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-dock-gantr-1e428ef8","title":"Dock gantry crane, 24 m span (Shipyard and Dry Dock)","summary":"Rail mounted portal gantry spanning a graving dock: braced A legs on four wheel bogies, twin box girders 14 m up with a walkway, a machinery house and a crab whose hook block hangs between the girders. The crab traverses and the hook hoists.","description":"Rail mounted portal gantry spanning a graving dock: braced A legs on four wheel bogies, twin box girders 14 m up with a walkway, a machinery house and a crab whose hook block hangs between the girders. The crab traverses and the hook hoists. Overall 27.20 by 17.00 by 7.15 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the span at rail level; it rests on y=0 so the bogies stand on an apron either side of a 16 m dock. The wire rope is modelled as a short fall that travels with the hook block: rope cannot pay out under a rigid node transform, and the festoon cable, the rail clamps and the ladders are solid for the same reason. Rigid node-transform clips: trolley-open, trolley-close, hoist-open and hoist-close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-dock-gantr-1e428ef8","cdnUrl":"https://cdn.3dassets.dev/assets/37932/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-dock-gantr-1e428ef8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37932/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37932/v1/poster.webp","blurhash":"UCBWi3-:M_xt_N?bITIU9FtRaeIT9Fxu-;IU","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54404,"triangles":1148,"vertices":2547,"meshes":6,"materials":4,"textures":0,"animations":["trolley-open","trolley-close","hoist-open","hoist-close"],"boundingBox":{"min":[-13.600000381469727,-0.00005048347333769243,-3.3999181861250527],"max":[13.600000381469727,16.999935940936243,3.749408289816984]},"sizeMeters":[27.2,17,7.149],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:51.250Z","updatedAt":"2026-09-12T06:05:51.343Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37932/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function DockGantryCrane24MSpanShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37932/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37932/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37932/v1/model.glb\" alt=\"Dock gantry crane, 24 m span (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37932/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37932/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37933","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-pillar-jib-1dfcd475","title":"Pillar jib crane, 7 m reach (Shipyard and Dry Dock)","summary":"Bolted down pillar jib crane 8.6 m tall with a 7 m tie braced jib, a slew ring at the column head, an electric hoist on the jib and a hook block under it. The jib slews through a full circle and the hook hoists with it.","description":"Bolted down pillar jib crane 8.6 m tall with a 7 m tie braced jib, a slew ring at the column head, an electric hoist on the jib and a hook block under it. The jib slews through a full circle and the hook hoists with it. Overall 8.30 by 9.17 by 2.20 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base plate; it rests on y=0 and the jib swings clear of the column at 6.5 m, so nothing higher than that belongs inside its radius. The wire rope travels with the hook block rather than paying out, and the pendant tie, the festoon cable and the control pendant are modelled solid. Rigid node-transform clips: open, close and slew. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-pillar-jib-1dfcd475","cdnUrl":"https://cdn.3dassets.dev/assets/37933/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-pillar-jib-1dfcd475","thumbnailUrl":"https://cdn.3dassets.dev/assets/37933/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37933/v1/poster.webp","blurhash":"U58q7~~B000f*0EN8_$y00Wr%NMxq@~B.80L","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21056,"triangles":376,"vertices":860,"meshes":5,"materials":3,"textures":0,"animations":["open","close","slew"],"boundingBox":{"min":[-1.100000023841858,0.00007857432639585271,-1.100000023841858],"max":[7.199999809265137,9.171432782999464,1.100000023841858]},"sizeMeters":[8.3,9.171,2.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:52.311Z","updatedAt":"2026-09-12T06:05:52.433Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37933/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function PillarJibCrane7MReachShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37933/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37933/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37933/v1/model.glb\" alt=\"Pillar jib crane, 7 m reach (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37933/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37933/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37934","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-crawler-cr-1e80c332","title":"Crawler crane with lattice boom (Shipyard and Dry Dock)","summary":"Tracked lattice boom crane for yard lifts: twin crawler tracks on a carbody, a slewing upper with counterweight, operator cab and winch drums, and a 14 m lattice boom raked over the front. The upper slews and the hook hoists with it.","description":"Tracked lattice boom crane for yard lifts: twin crawler tracks on a carbody, a slewing upper with counterweight, operator cab and winch drums, and a 14 m lattice boom raked over the front. The upper slews and the hook hoists with it. Overall 4.40 by 13.52 by 11.96 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the tracks on the ground; it rests on y=0 and the boom rakes toward -Z, so the crane is turned to face the lift. The rubber pads, the boom pendants and the wire rope are modelled solid: a track is a chain of links and rope is a soft body, and neither is reachable with a rigid node transform. Rigid node-transform clips: open, close and slew. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-crawler-cr-1e80c332","cdnUrl":"https://cdn.3dassets.dev/assets/37934/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-crawler-cr-1e80c332","thumbnailUrl":"https://cdn.3dassets.dev/assets/37934/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37934/v1/poster.webp","blurhash":"UBBDGy%K02E4ay9HM|~T9KIq?X?F-,%KbI9c","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":40884,"triangles":836,"vertices":1884,"meshes":5,"materials":4,"textures":0,"animations":["open","close","slew"],"boundingBox":{"min":[-2.20012814027184,-0.00009339215259440703,-8.5],"max":[2.20012814027184,13.52161881005567,3.4600000381469727]},"sizeMeters":[4.4,13.522,11.96],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:52.517Z","updatedAt":"2026-09-12T06:05:52.617Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37934/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function CrawlerCraneWithLatticeBoomShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37934/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37934/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37934/v1/model.glb\" alt=\"Crawler crane with lattice boom (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37934/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37934/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37935","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-overhead-t-54f71d7c","title":"Overhead travelling crane, 8 m span (Shipyard and Dry Dock)","summary":"Single girder underslung overhead crane for a fabrication shed: a box bridge hung from two end carriages on rail mounted wheels, a crab with its gearbox and drum, and a hook block under it. The crab traverses the bridge and the hook hoists with it.","description":"Single girder underslung overhead crane for a fabrication shed: a box bridge hung from two end carriages on rail mounted wheels, a crab with its gearbox and drum, and a hook block under it. The crab traverses the bridge and the hook hoists with it. Overall 8.90 by 4.77 by 7.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, with a free origin on its working plane. The origin is free and sits at the centre of the span on the rail top, because the crane hangs in a shed rather than standing on the ground: place it at the height of the crane rails, here 8.4 m between rail centres. The rails, the festoon cable, the down shop conductors and the wire rope are modelled solid; the rope travels with the hook block rather than paying out. Rigid node-transform clips: trolley-open, trolley-close, hoist-open and hoist-close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-overhead-t-54f71d7c","cdnUrl":"https://cdn.3dassets.dev/assets/37935/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-overhead-t-54f71d7c","thumbnailUrl":"https://cdn.3dassets.dev/assets/37935/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37935/v1/poster.webp","blurhash":"UC97U|t89FRj~WxuIUM{4-%1xuIU00jExuW=","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23920,"triangles":428,"vertices":955,"meshes":7,"materials":5,"textures":0,"animations":["trolley-open","trolley-close","hoist-open","hoist-close"],"boundingBox":{"min":[-4.449999809265137,-4.550000143051148,-3.500091924750889],"max":[4.449999809265137,0.21995299150666753,3.500091924750889]},"sizeMeters":[8.9,4.77,7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:52.117Z","updatedAt":"2026-09-12T06:05:52.326Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37935/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function OverheadTravellingCrane8MSpanShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37935/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37935/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37935/v1/model.glb\" alt=\"Overhead travelling crane, 8 m span (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37935/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37935/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37936","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-staging-to-844f4242","title":"Mobile staging tower, 6 m (Shipyard and Dry Dock)","summary":"Braced access tower 6 m to the top deck on locking castors: three boarded lifts, ladder access through trap hatches, guardrails and toe boards all round, for working a hull side down in a dock.","description":"Braced access tower 6 m to the top deck on locking castors: three boarded lifts, ladder access through trap hatches, guardrails and toe boards all round, for working a hull side down in a dock. Overall 2.16 by 7.02 by 2.16 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the tower's footprint; it rests on y=0 on its castors. Static tower: the castors, the ladders and the trap hatches are modelled solid, and the tower is not a mechanism. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-staging-to-844f4242","cdnUrl":"https://cdn.3dassets.dev/assets/37936/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-staging-to-844f4242","thumbnailUrl":"https://cdn.3dassets.dev/assets/37936/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37936/v1/poster.webp","blurhash":"U8AAdjt800M{~qoM4nWB9Ff7%gaxt7ayWBof","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":47412,"triangles":1060,"vertices":2380,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.0799316117880449,0,-1.0799316117880449],"max":[1.0799316117880449,7.019999980926514,1.0799316117880449]},"sizeMeters":[2.16,7.02,2.16],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:52.971Z","updatedAt":"2026-09-12T06:05:53.064Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37936/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MobileStagingTower6MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37936/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37936/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37936/v1/model.glb\" alt=\"Mobile staging tower, 6 m (Shipyard and Dry Dock)\" 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/37936/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/37936/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37937","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-scaffold-r-eac7e75e","title":"Scaffold run section, 4 m (Shipyard and Dry Dock)","summary":"Tube and fitting scaffold bay 4 m long, 0.9 m wide and 2 m to the working deck: standards, ledgers, transoms, scaffold boards, a double guardrail and a toe board. Ports at both ends so a run follows a hull for any length.","description":"Tube and fitting scaffold bay 4 m long, 0.9 m wide and 2 m to the working deck: standards, ledgers, transoms, scaffold boards, a double guardrail and a toe board. Ports at both ends so a run follows a hull for any length. Overall 4.00 by 3.16 by 0.95 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the bay's footprint, the working face toward +Z. Static modular piece; the couplers are modelled solid. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-scaffold-r-eac7e75e","cdnUrl":"https://cdn.3dassets.dev/assets/37937/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-scaffold-r-eac7e75e","thumbnailUrl":"https://cdn.3dassets.dev/assets/37937/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37937/v1/poster.webp","blurhash":"UAA^UcV[4nxt_N-;ITM_00%M%2M_9Fof%LoJ","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":19836,"triangles":392,"vertices":908,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2,-0.00006526669493434056,-0.47489853756877504],"max":[2,3.160065352525623,0.47489853756877504]},"sizeMeters":[4,3.16,0.95],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:54.970Z","updatedAt":"2026-09-12T06:05:55.084Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37937/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ScaffoldRunSection4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37937/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37937/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37937/v1/model.glb\" alt=\"Scaffold run section, 4 m (Shipyard and Dry Dock)\" 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/37937/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/37937/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37938","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-man-basket-94b4d00d","title":"Crane man basket in its stillage (Shipyard and Dry Dock)","summary":"A two person crane basket with mesh sides, a gated entry, a rigid yoke and a single lifting eye, standing in the steel stillage it is parked and inspected in. The basket lifts straight out of the stillage.","description":"A two person crane basket with mesh sides, a gated entry, a rigid yoke and a single lifting eye, standing in the steel stillage it is parked and inspected in. The basket lifts straight out of the stillage. Overall 2.20 by 3.16 by 1.70 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the stillage's footprint; it rests on y=0, and the basket's lifting eye is on the yoke centreline so it hangs level. The safety harness anchor points and the mesh are modelled solid; only the basket lifts, and it lifts vertically rather than swinging on a rope. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-man-basket-94b4d00d","cdnUrl":"https://cdn.3dassets.dev/assets/37938/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-man-basket-94b4d00d","thumbnailUrl":"https://cdn.3dassets.dev/assets/37938/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37938/v1/poster.webp","blurhash":"U7C6GQsF00xn0OSe}mae8zt1pGIZ^zVxjJx=","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23840,"triangles":348,"vertices":800,"meshes":23,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.100000023841858,-0.000010381170190365552,-0.8499679739876095],"max":[1.100000023841858,3.1600001430511475,0.8499679739876095]},"sizeMeters":[2.2,3.16,1.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:54.044Z","updatedAt":"2026-09-12T06:05:54.148Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37938/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function CraneManBasketInItsStillageShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37938/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37938/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37938/v1/model.glb\" alt=\"Crane man basket in its stillage (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37938/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37938/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37939","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-floodlight-c20bdd87","title":"Yard floodlight mast, 12 m (Shipyard and Dry Dock)","summary":"Lattice floodlight mast 12 m to the head frame on a bolted concrete base, carrying six blank faced floodlights on a raked bracket, with a climbing ladder, a cable box at the foot and a yellow banded lower section.","description":"Lattice floodlight mast 12 m to the head frame on a bolted concrete base, carrying six blank faced floodlights on a raked bracket, with a climbing ladder, a cable box at the foot and a yellow banded lower section. Overall 2.72 by 12.76 by 1.42 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base; it rests on y=0. Static mast: the lamps do not aim or light, because a GLB carries no light source and aiming would need a joint per lamp. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-floodlight-c20bdd87","cdnUrl":"https://cdn.3dassets.dev/assets/37939/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-floodlight-c20bdd87","thumbnailUrl":"https://cdn.3dassets.dev/assets/37939/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37939/v1/poster.webp","blurhash":"U17B7c.7000000WA~ps=~Vxt0fD+Diax-;of","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":94800,"triangles":1032,"vertices":2316,"meshes":6,"materials":6,"textures":1,"animations":[],"boundingBox":{"min":[-1.359848588518611,0.000032048691878699964,-0.699999988079071],"max":[1.359848588518611,12.762104988098145,0.7200147185257373]},"sizeMeters":[2.72,12.762,1.42],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:55.446Z","updatedAt":"2026-09-12T06:05:55.551Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37939/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YardFloodlightMast12MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37939/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37939/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37939/v1/model.glb\" alt=\"Yard floodlight mast, 12 m (Shipyard and Dry Dock)\" 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/37939/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/37939/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37940","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-fabricatio-35388ade","title":"Fabrication shed bay, 4 m (Shipyard and Dry Dock)","summary":"A 4 m slice of an 8 m span fabrication shed: a portal frame in shop primer, profiled cladding to both sides, crane rail corbels at 5.2 m and a clear open end. Ports at both ends so a shed runs to any length.","description":"A 4 m slice of an 8 m span fabrication shed: a portal frame in shop primer, profiled cladding to both sides, crane rail corbels at 5.2 m and a clear open end. Ports at both ends so a shed runs to any length. Overall 8.78 by 7.45 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the bay's footprint with the span along X; it rests on y=0 and the roof is a separate section laid on the eaves at 6 m. Static modular piece. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-fabricatio-35388ade","cdnUrl":"https://cdn.3dassets.dev/assets/37940/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-fabricatio-35388ade","thumbnailUrl":"https://cdn.3dassets.dev/assets/37940/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37940/v1/poster.webp","blurhash":"UDF=%J-VEQ~qI9_MXT4n009FD%M{EOR5$zS%","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":15944,"triangles":300,"vertices":692,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-4.389999866485596,0.00001295666402567619,-2.001203283965433],"max":[4.389999866485596,7.449986852601111,2.001203283965433]},"sizeMeters":[8.78,7.45,4.002],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:54.635Z","updatedAt":"2026-09-12T06:05:54.730Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37940/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FabricationShedBay4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37940/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37940/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37940/v1/model.glb\" alt=\"Fabrication shed bay, 4 m (Shipyard and Dry Dock)\" 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/37940/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/37940/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37941","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-fabricatio-aea272d7","title":"Fabrication shed door bay (Shipyard and Dry Dock)","summary":"The gable end of an 8 m span shed with a 5 m by 4 m insulated roller shutter in its own frame, a wicket beside it and a blank sign panel over the opening. The shutter rolls up into its hood.","description":"The gable end of an 8 m span shed with a 5 m by 4 m insulated roller shutter in its own frame, a wicket beside it and a blank sign panel over the opening. The shutter rolls up into its hood. Overall 8.74 by 7.45 by 4.10 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the bay's footprint with the span along X and the shutter facing +Z; it rests on y=0 and closes the end of a shed run. The shutter is modelled as a rigid curtain that rises as one piece: a real shutter rolls slat by slat, which would need a joint per slat. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-fabricatio-aea272d7","cdnUrl":"https://cdn.3dassets.dev/assets/37941/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-fabricatio-aea272d7","thumbnailUrl":"https://cdn.3dassets.dev/assets/37941/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37941/v1/poster.webp","blurhash":"UGG+H=%$0K~VU]-;TL9F00DiNIIoKRM{wa%1","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18868,"triangles":372,"vertices":860,"meshes":14,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-4.369999885559082,-0.00015717032380235807,-2.0498778810214997],"max":[4.369999885559082,7.449986852601111,2.0498778810214997]},"sizeMeters":[8.74,7.45,4.1],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:57.055Z","updatedAt":"2026-09-12T06:05:57.155Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37941/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function FabricationShedDoorBayShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37941/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37941/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37941/v1/model.glb\" alt=\"Fabrication shed door bay (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37941/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37941/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37942","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-shed-roof--ef0a5109","title":"Shed roof section, 4 m (Shipyard and Dry Dock)","summary":"A 4 m pitched roof cassette for an 8 m span shed: profiled steel sheeting on purlins with a ridge cap, a translucent rooflight strip in each slope and a gutter along both eaves.","description":"A 4 m pitched roof cassette for an 8 m span shed: profiled steel sheeting on purlins with a ridge cap, a translucent rooflight strip in each slope and a gutter along both eaves. Overall 9.06 by 1.55 by 4.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the cassette at eaves level; lay it at y=6 on a shed bay so the eaves meet the frame and the ridge stands 1.35 m above them. Static modular piece. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-shed-roof--ef0a5109","cdnUrl":"https://cdn.3dassets.dev/assets/37942/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-shed-roof--ef0a5109","thumbnailUrl":"https://cdn.3dassets.dev/assets/37942/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37942/v1/poster.webp","blurhash":"UACGV[D%00_3j?%MWBIU00%M~q9FRk9Fxu?b","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"exterior","title":"Exterior"},{"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":7528,"triangles":108,"vertices":228,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-4.53000020980835,0.00009216001478939972,-2.001428664125354],"max":[4.53000020980835,1.549776350752599,2.001428664125354]},"sizeMeters":[9.06,1.55,4.003],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:56.320Z","updatedAt":"2026-09-12T06:05:56.501Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37942/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ShedRoofSection4MShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37942/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37942/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37942/v1/model.glb\" alt=\"Shed roof section, 4 m (Shipyard and Dry Dock)\" 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/37942/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/37942/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37943","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-plate-roll-71a40d73","title":"Three roll plate bending machine (Shipyard and Dry Dock)","summary":"A pyramid plate roller 2.6 m between housings: two driven bottom rolls, a pinching top roll, a geared drive end, a drop end for releasing a rolled shell and a pedestal control station. All three rolls turn.","description":"A pyramid plate roller 2.6 m between housings: two driven bottom rolls, a pinching top roll, a geared drive end, a drop end for releasing a rolled shell and a pedestal control station. All three rolls turn. Overall 5.15 by 2.62 by 1.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the machine's footprint with the roll axes along X; it rests on y=0. The drive gearing, the pinch adjustment and the drop end latch are modelled solid; only the rolls turn, and they turn in place rather than feeding a plate. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-plate-roll-71a40d73","cdnUrl":"https://cdn.3dassets.dev/assets/37943/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-plate-roll-71a40d73","thumbnailUrl":"https://cdn.3dassets.dev/assets/37943/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37943/v1/poster.webp","blurhash":"U88q~f?w4Tpdo#%hx]RO00Mw-;ZzIAVrngS6","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14024,"triangles":300,"vertices":658,"meshes":6,"materials":3,"textures":0,"animations":["spin"],"boundingBox":{"min":[-2.5999999046325684,-0.000058933446306141946,-0.9501312118237714],"max":[2.549999952316284,2.620058819005388,0.9501312118237714]},"sizeMeters":[5.15,2.62,1.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:56.761Z","updatedAt":"2026-09-12T06:05:56.873Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37943/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ThreeRollPlateBendingMachineShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37943/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37943/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37943/v1/model.glb\" alt=\"Three roll plate bending machine (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37943/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37943/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37944","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-press-brak-bdbaf0a2","title":"Hydraulic press brake (Shipyard and Dry Dock)","summary":"A 3 m hydraulic press brake: a welded C frame with two ram cylinders, a punch on the descending beam, a vee die in the bed, a back gauge behind and a foot control on a lead. The ram strokes down and back up.","description":"A 3 m hydraulic press brake: a welded C frame with two ram cylinders, a punch on the descending beam, a vee die in the bed, a back gauge behind and a foot control on a lead. The ram strokes down and back up. Overall 4.25 by 4.20 by 2.05 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the machine's footprint with the bed along X; it rests on y=0. The hydraulic hoses, the foot control lead and the back gauge screws are modelled solid; only the ram beam moves. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-press-brak-bdbaf0a2","cdnUrl":"https://cdn.3dassets.dev/assets/37944/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-press-brak-bdbaf0a2","thumbnailUrl":"https://cdn.3dassets.dev/assets/37944/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37944/v1/poster.webp","blurhash":"UH85yXx]8wRjyZtSR4VXR3WBo$jEs*oeS5R+","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16188,"triangles":288,"vertices":660,"meshes":7,"materials":3,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-1.7999999523162842,-0.00008846633176062824,-0.8000114563619825],"max":[2.450000047683716,4.199899962474499,1.2499297661382505]},"sizeMeters":[4.25,4.2,2.05],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:57.251Z","updatedAt":"2026-09-12T06:05:57.355Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37944/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function HydraulicPressBrakeShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37944/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37944/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37944/v1/model.glb\" alt=\"Hydraulic press brake (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37944/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37944/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37945","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-profile-cu-733237ad","title":"Profile cutting table (Shipyard and Dry Dock)","summary":"A 4 m by 2 m downdraught cutting table with a slatted bed, a bridge gantry on rails carrying the torch head and its height sensor, a drive cabinet and a swing arm control screen. The gantry traverses the table.","description":"A 4 m by 2 m downdraught cutting table with a slatted bed, a bridge gantry on rails carrying the torch head and its height sensor, a drive cabinet and a swing arm control screen. The gantry traverses the table. Overall 5.35 by 1.76 by 2.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the table's footprint with the rails along X; it rests on y=0. The torch leads, the extraction ducting and the slat dross are modelled solid, and the cut itself is not modelled: a flame needs a shader, not a joint. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-profile-cu-733237ad","cdnUrl":"https://cdn.3dassets.dev/assets/37945/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-profile-cu-733237ad","thumbnailUrl":"https://cdn.3dassets.dev/assets/37945/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37945/v1/poster.webp","blurhash":"U49aKt@X01eB^+-=Q,JU00LN|=KO0K4mT}vf","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":21304,"triangles":368,"vertices":857,"meshes":10,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2.299999952316284,-0.00009353568979064697,-1.4500000476837158],"max":[3.0499679920281695,1.7600935261530475,1.4500000476837158]},"sizeMeters":[5.35,1.76,2.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:58.095Z","updatedAt":"2026-09-12T06:05:58.196Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37945/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function ProfileCuttingTableShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37945/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37945/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37945/v1/model.glb\" alt=\"Profile cutting table (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37945/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37945/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37946","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-welding-ba-203ec019","title":"Welding bay screen (Shipyard and Dry Dock)","summary":"A three leaf welding screen 3.6 m wide and 2 m tall on castors: a tubular frame with flame retardant curtains, a blank warning plate on the middle leaf and a lead hook at one end. One leaf swings to close the bay.","description":"A three leaf welding screen 3.6 m wide and 2 m tall on castors: a tubular frame with flame retardant curtains, a blank warning plate on the middle leaf and a lead hook at one end. One leaf swings to close the bay. Overall 3.64 by 2.02 by 0.20 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the screen's footprint, the working side toward +Z. The curtains are modelled solid: fabric is a soft body and there is no skinning in this library, so they do not hang, sway or part. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-welding-ba-203ec019","cdnUrl":"https://cdn.3dassets.dev/assets/37946/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-welding-ba-203ec019","thumbnailUrl":"https://cdn.3dassets.dev/assets/37946/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37946/v1/poster.webp","blurhash":"UB9[MuXAHq%M?w.TRjZ~8w%Mt.M_MwrVkWOZ","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":23940,"triangles":480,"vertices":1100,"meshes":10,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-2.4200000286102297,-0.000019833123123258467,-0.0700000524520874],"max":[1.2200000286102295,2.0250912613466516,0.12993224871927783]},"sizeMeters":[3.64,2.025,0.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:58.580Z","updatedAt":"2026-09-12T06:05:58.679Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37946/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function WeldingBayScreenShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37946/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37946/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37946/v1/model.glb\" alt=\"Welding bay screen (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37946/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37946/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37947","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-welding-se-2722f071","title":"Welding set with torch and leads (Shipyard and Dry Dock)","summary":"A wheeled inverter welding set with a wire feed unit on top, a gas bottle strapped to the back, a torch hung on the handle and the earth clamp and leads coiled over the barrow, for a fabrication bay.","description":"A wheeled inverter welding set with a wire feed unit on top, a gas bottle strapped to the back, a torch hung on the handle and the earth clamp and leads coiled over the barrow, for a fabrication bay. Overall 0.80 by 1.73 by 0.90 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the trolley's footprint, the control panel toward +Z. The leads and the torch hose are modelled solid in one coiled pose, because a cable needs a joint per element and there is no skinning in this library. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-welding-se-2722f071","cdnUrl":"https://cdn.3dassets.dev/assets/37947/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-welding-se-2722f071","thumbnailUrl":"https://cdn.3dassets.dev/assets/37947/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37947/v1/poster.webp","blurhash":"U99*4Cx^00I9=tWBE2t600M__N%M5[ai-4oz","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":25752,"triangles":472,"vertices":1082,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.4000106943855317,0,-0.45001710488608726],"max":[0.4000106943855317,1.725000023841858,0.45001710488608726]},"sizeMeters":[0.8,1.725,0.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:58.752Z","updatedAt":"2026-09-12T06:05:58.856Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37947/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WeldingSetWithTorchAndLeadsShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37947/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37947/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37947/v1/model.glb\" alt=\"Welding set with torch and leads (Shipyard and Dry Dock)\" 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/37947/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/37947/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37948","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-grinding-s-4369da31","title":"Pedestal grinding station (Shipyard and Dry Dock)","summary":"A double ended pedestal grinder on a cast base with wheel guards, tool rests, eye shields and a spark tray, beside a steel topped stand with abrasive discs and a chipping hammer on it. The wheel turns.","description":"A double ended pedestal grinder on a cast base with wheel guards, tool rests, eye shields and a spark tray, beside a steel topped stand with abrasive discs and a chipping hammer on it. The wheel turns. Overall 2.58 by 1.80 by 0.75 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the pedestal's footprint, the working side toward +Z. The sparks are not modelled at all: fire and spark are shader effects, and a GLB carries geometry. The eye shields and the tool rests are solid. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-grinding-s-4369da31","cdnUrl":"https://cdn.3dassets.dev/assets/37948/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-grinding-s-4369da31","thumbnailUrl":"https://cdn.3dassets.dev/assets/37948/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37948/v1/poster.webp","blurhash":"U79HR+yE4m#P?w_4V?RO00^+?vENxZRO%gtS","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"},{"slug":"interior","title":"Interior"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":26812,"triangles":612,"vertices":1345,"meshes":6,"materials":4,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.6800091616626827,0.000022105277576067728,-0.35221415356033053],"max":[1.899999976158142,1.7999743075993193,0.4000144900601351]},"sizeMeters":[2.58,1.8,0.752],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:59.136Z","updatedAt":"2026-09-12T06:05:59.242Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37948/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function PedestalGrindingStationShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37948/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37948/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37948/v1/model.glb\" alt=\"Pedestal grinding station (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37948/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37948/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37949","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-paint-spra-bf2fe268","title":"Airless paint spray rig (Shipyard and Dry Dock)","summary":"A skid mounted airless spray rig: a pump on a wheeled frame, two 200 litre paint drums in a bund, a hose reel of spray line, a spray gun in its holster and a blank drum label panel, for coating a hull in a dock.","description":"A skid mounted airless spray rig: a pump on a wheeled frame, two 200 litre paint drums in a bund, a hose reel of spray line, a spray gun in its holster and a blank drum label panel, for coating a hull in a dock. Overall 1.72 by 1.52 by 1.17 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the skid's footprint, the controls toward +Z. The spray line and the gun hose are modelled solid in one coiled pose and no spray is modelled, because paint in flight is a particle effect rather than geometry. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-paint-spra-bf2fe268","cdnUrl":"https://cdn.3dassets.dev/assets/37949/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-paint-spra-bf2fe268","thumbnailUrl":"https://cdn.3dassets.dev/assets/37949/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37949/v1/poster.webp","blurhash":"U7BDHE_200H@0Mxu={J6L#9tGw-pS7v~^0X4","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":28860,"triangles":552,"vertices":1251,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.8500000238418579,0.00003753881955505245,-0.5499954376505347],"max":[0.8677658475935459,1.5199597173550308,0.6199977053864546]},"sizeMeters":[1.718,1.52,1.17],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:05:59.841Z","updatedAt":"2026-09-12T06:05:59.947Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37949/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function AirlessPaintSprayRigShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37949/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37949/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37949/v1/model.glb\" alt=\"Airless paint spray rig (Shipyard and Dry Dock)\" 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/37949/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/37949/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37950","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-shot-blast-e981f109","title":"Mobile shot blast unit (Shipyard and Dry Dock)","summary":"A wheeled abrasive blast pot with a pressure vessel, a remote control handle, a hose reel of blast line, a nozzle in its rack and a bag of grit on the frame, for preparing a hull before paint.","description":"A wheeled abrasive blast pot with a pressure vessel, a remote control handle, a hose reel of blast line, a nozzle in its rack and a bag of grit on the frame, for preparing a hull before paint. Overall 1.47 by 2.28 by 1.16 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the frame's footprint, the controls toward +Z. The blast hose and the nozzle line are modelled solid in one pose, and the blast stream is not modelled at all. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-shot-blast-e981f109","cdnUrl":"https://cdn.3dassets.dev/assets/37950/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-shot-blast-e981f109","thumbnailUrl":"https://cdn.3dassets.dev/assets/37950/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37950/v1/poster.webp","blurhash":"U89aKtI900yE0Lt8=_aJHX%MYRD*?bIAoy-;","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":22640,"triangles":412,"vertices":915,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.7702900171279907,0,-0.5250053236026637],"max":[0.699999988079071,2.2799999713897705,0.6299835114708883]},"sizeMeters":[1.47,2.28,1.155],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:00.282Z","updatedAt":"2026-09-12T06:06:00.508Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37950/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MobileShotBlastUnitShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37950/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37950/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37950/v1/model.glb\" alt=\"Mobile shot blast unit (Shipyard and Dry Dock)\" 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/37950/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/37950/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37951","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-pressure-w-3dd4872b","title":"High pressure washer (Shipyard and Dry Dock)","summary":"A trailer framed high pressure washing set: a pump and motor under a hinged cover, a water tank, a lance in its clip, a hose reel of high pressure line and a drain hose coiled on the frame, for washing off a hull.","description":"A trailer framed high pressure washing set: a pump and motor under a hinged cover, a water tank, a lance in its clip, a hose reel of high pressure line and a drain hose coiled on the frame, for washing off a hull. Overall 1.50 by 1.34 by 1.20 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the frame's footprint, the controls toward +Z. The hoses are modelled solid in one coiled pose and no water is modelled: a jet is a particle effect and a hose needs a joint per element. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-pressure-w-3dd4872b","cdnUrl":"https://cdn.3dassets.dev/assets/37951/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-pressure-w-3dd4872b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37951/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37951/v1/poster.webp","blurhash":"UFEV$$_3008_?^xuIAE1QkRPJWog0Me.={s:","category":{"slug":"weapons-tools","title":"Weapons & Tools"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":19008,"triangles":332,"vertices":753,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-0.7512000203132629,-0.000041114592547075723,-0.6500019647225829],"max":[0.7512000203132629,1.3399832267774072,0.5519852845670321]},"sizeMeters":[1.502,1.34,1.202],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:01.532Z","updatedAt":"2026-09-12T06:06:01.722Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37951/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HighPressureWasherShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37951/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37951/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37951/v1/model.glb\" alt=\"High pressure washer (Shipyard and Dry Dock)\" 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/37951/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/37951/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37952","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-cable-reel-6d1adec5","title":"Welding cable reel on a stand (Shipyard and Dry Dock)","summary":"A steel drum of heavy welding cable on a braked A frame stand, with a slotted flange, a crank handle, a lead end on a stud and a blank rating plate. The drum turns on its stand.","description":"A steel drum of heavy welding cable on a braked A frame stand, with a slotted flange, a crank handle, a lead end on a stud and a blank rating plate. The drum turns on its stand. Overall 1.38 by 1.58 by 1.20 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the stand's footprint with the drum axis along X; it rests on y=0. The cable itself is modelled as a solid wound body: it does not unwind, because a cable needs a joint per element. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-cable-reel-6d1adec5","cdnUrl":"https://cdn.3dassets.dev/assets/37952/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-cable-reel-6d1adec5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37952/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37952/v1/poster.webp","blurhash":"U4Be~-?G00,-07wh}S9a00EMF|sp}Pt3tmOr","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16296,"triangles":320,"vertices":680,"meshes":3,"materials":3,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.6899999976158142,0.000005783831578121124,-0.6000411979144452],"max":[0.6899999976158142,1.580025660581656,0.6000411979144452]},"sizeMeters":[1.38,1.58,1.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:01.867Z","updatedAt":"2026-09-12T06:06:01.973Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37952/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function WeldingCableReelOnAStandShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37952/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37952/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37952/v1/model.glb\" alt=\"Welding cable reel on a stand (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37952/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37952/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37953","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-hose-reel--6d7ad399","title":"Air hose reel on a stand (Shipyard and Dry Dock)","summary":"A wall or floor standing hose reel wound with compressed air line, on a bolted bracket with a swivel inlet, a guide roller and a coupling hung on the frame. The reel turns.","description":"A wall or floor standing hose reel wound with compressed air line, on a bolted bracket with a swivel inlet, a guide roller and a coupling hung on the frame. The reel turns. Overall 0.89 by 1.37 by 0.70 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the bracket's footprint with the reel axis along X; it rests on y=0. The hose is modelled as a solid wound body and the coupling hangs in one pose; neither pays out. Rigid node-transform clips: spin. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-hose-reel--6d7ad399","cdnUrl":"https://cdn.3dassets.dev/assets/37953/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-hose-reel--6d7ad399","thumbnailUrl":"https://cdn.3dassets.dev/assets/37953/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37953/v1/poster.webp","blurhash":"U7DbA,~B000gozR-M|s+ROs+R.EO$$-AkCAG","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":15804,"triangles":284,"vertices":612,"meshes":4,"materials":4,"textures":0,"animations":["spin"],"boundingBox":{"min":[-0.4000000059604645,0,-0.35099092089329836],"max":[0.49000000953674316,1.3700000047683716,0.35099092089329836]},"sizeMeters":[0.89,1.37,0.702],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:02.779Z","updatedAt":"2026-09-12T06:06:02.890Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37953/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function AirHoseReelOnAStandShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37953/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37953/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37953/v1/model.glb\" alt=\"Air hose reel on a stand (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37953/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37953/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37954","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-gas-bottle-5784b5be","title":"Gas bottle rack (Shipyard and Dry Dock)","summary":"A caged rack holding eight industrial gas bottles in two rows, chained back with a solid bar, on a forkable base with a blank hazard placard and a blue and red colour coded pair of manifolds.","description":"A caged rack holding eight industrial gas bottles in two rows, chained back with a solid bar, on a forkable base with a blank hazard placard and a blue and red colour coded pair of manifolds. Overall 1.90 by 2.12 by 1.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the rack's footprint, the gate side toward +Z. The retaining chains are modelled as solid bars and the bottles do not lift out, because a chain needs a joint per link. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-gas-bottle-5784b5be","cdnUrl":"https://cdn.3dassets.dev/assets/37954/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-gas-bottle-5784b5be","thumbnailUrl":"https://cdn.3dassets.dev/assets/37954/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37954/v1/poster.webp","blurhash":"U7G7oF}T007NGF$*,CRP0JO@$nzp;2=vKj5r","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":27144,"triangles":680,"vertices":1532,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-0.9500112405654096,0,-0.5012131000702391],"max":[0.9500112405654096,2.119999885559082,0.5012131000702391]},"sizeMeters":[1.9,2.12,1.002],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:03.420Z","updatedAt":"2026-09-12T06:06:03.535Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37954/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GasBottleRackShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37954/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37954/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37954/v1/model.glb\" alt=\"Gas bottle rack (Shipyard and Dry Dock)\" 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/37954/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/37954/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37955","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-compressor-e82a93c4","title":"Skid mounted air compressor (Shipyard and Dry Dock)","summary":"A canopied screw compressor on a skid: an acoustic housing with louvred panels, a receiver tank alongside, an outlet manifold with four valves, a control panel and lifting eyes at the corners.","description":"A canopied screw compressor on a skid: an acoustic housing with louvred panels, a receiver tank alongside, an outlet manifold with four valves, a control panel and lifting eyes at the corners. Overall 3.60 by 1.84 by 1.65 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the skid's footprint, the control panel toward +Z. Static plant: the panels, the valves and the hoses are modelled solid. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-compressor-e82a93c4","cdnUrl":"https://cdn.3dassets.dev/assets/37955/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-compressor-e82a93c4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37955/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37955/v1/poster.webp","blurhash":"UABN1l?w9Ew{BXtm%2Sg00nMJEE2}RvyZ~iv","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":20640,"triangles":360,"vertices":834,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-1.399999976158142,0.000025634908902061326,-0.8999710045706022],"max":[2.200000047683716,1.840084541077529,0.7500106687057108]},"sizeMeters":[3.6,1.84,1.65],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:04.348Z","updatedAt":"2026-09-12T06:06:04.456Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37955/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SkidMountedAirCompressorShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37955/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37955/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37955/v1/model.glb\" alt=\"Skid mounted air compressor (Shipyard and Dry Dock)\" 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/37955/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/37955/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37956","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-generator--9d90b1c9","title":"Containerised generator set (Shipyard and Dry Dock)","summary":"A site generator in an acoustic container: hinged access doors along one side, a roof exhaust with a rain cap, an output panel with a blank rating plate, a bunded fuel base and forklift pockets.","description":"A site generator in an acoustic container: hinged access doors along one side, a roof exhaust with a rain cap, an output panel with a blank rating plate, a bunded fuel base and forklift pockets. Overall 3.40 by 3.26 by 1.70 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base's footprint, the output panel toward +Z. Static plant: the doors, the panel and the exhaust are modelled solid on this unit. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-generator--9d90b1c9","cdnUrl":"https://cdn.3dassets.dev/assets/37956/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-generator--9d90b1c9","thumbnailUrl":"https://cdn.3dassets.dev/assets/37956/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37956/v1/poster.webp","blurhash":"U9CQY_cF00=YI--;xaDj00nMu6ER-UD%R:-:","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":16952,"triangles":284,"vertices":658,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-1.7000000476837158,-0.00006383417523414536,-0.850129727510769],"max":[1.7000000476837158,3.260063824638491,0.850129727510769]},"sizeMeters":[3.4,3.26,1.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:04.553Z","updatedAt":"2026-09-12T06:06:04.660Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37956/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ContainerisedGeneratorSetShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37956/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37956/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37956/v1/model.glb\" alt=\"Containerised generator set (Shipyard and Dry Dock)\" 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/37956/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/37956/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37957","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-plate-rack-708aa9b8","title":"Vertical plate rack (Shipyard and Dry Dock)","summary":"A fabricated A frame plate rack 4 m long holding cut shell plates on edge in shop primer, with timber packers between them, chocks at the foot and a blank stock board at one end.","description":"A fabricated A frame plate rack 4 m long holding cut shell plates on edge in shop primer, with timber packers between them, chocks at the foot and a blank stock board at one end. Overall 4.56 by 2.29 by 2.40 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the rack's footprint, the plates standing across Z; it rests on y=0. Static rack; the plates do not lift out. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-plate-rack-708aa9b8","cdnUrl":"https://cdn.3dassets.dev/assets/37957/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-plate-rack-708aa9b8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37957/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37957/v1/poster.webp","blurhash":"U6Fg:nt100%L}?^4Eg5l00nm^P9u4;E*-Uni","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":12108,"triangles":240,"vertices":534,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-2.2792768478393555,0.0000713477366234283,-1.19991227836631],"max":[2.2792768478393555,2.2874867310292455,1.19991227836631]},"sizeMeters":[4.559,2.287,2.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:05.504Z","updatedAt":"2026-09-12T06:06:05.616Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37957/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function VerticalPlateRackShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37957/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37957/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37957/v1/model.glb\" alt=\"Vertical plate rack (Shipyard and Dry Dock)\" 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/37957/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/37957/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37958","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-pipe-spool-fec408f8","title":"Pipe spool rack (Shipyard and Dry Dock)","summary":"A tiered rack of prefabricated pipe spools in shop primer: flanged straights, bends and a tee on three shelves of a bolted frame, with end stops, timber battens and a blank tag board.","description":"A tiered rack of prefabricated pipe spools in shop primer: flanged straights, bends and a tee on three shelves of a bolted frame, with end stops, timber battens and a blank tag board. Overall 3.63 by 2.39 by 1.34 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the rack's footprint with the spools lying along X; it rests on y=0. Static rack; the spools do not lift out. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-pipe-spool-fec408f8","cdnUrl":"https://cdn.3dassets.dev/assets/37958/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-pipe-spool-fec408f8","thumbnailUrl":"https://cdn.3dassets.dev/assets/37958/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37958/v1/poster.webp","blurhash":"UCFEZF-o0N%2~T={I?Ip02R,-ARQ9uj?n+Ip","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":31708,"triangles":684,"vertices":1483,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.7599999904632568,-0.000025819974666330126,-0.6099569628872215],"max":[1.8700000047683716,2.3900223179674382,0.729956967655593]},"sizeMeters":[3.63,2.39,1.34],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:06.126Z","updatedAt":"2026-09-12T06:06:06.222Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37958/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PipeSpoolRackShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37958/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37958/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37958/v1/model.glb\" alt=\"Pipe spool rack (Shipyard and Dry Dock)\" 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/37958/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/37958/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37959","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-tool-store-eab404b4","title":"Site tool store cabinet (Shipyard and Dry Dock)","summary":"A heavy steel tool store 1.6 m wide on a forkable plinth, with two locking doors, a shelf of power tools and hand tools inside, a hasp and a blank asset plate. Both doors swing open.","description":"A heavy steel tool store 1.6 m wide on a forkable plinth, with two locking doors, a shelf of power tools and hand tools inside, a hasp and a blank asset plate. Both doors swing open. Overall 1.70 by 2.22 by 0.87 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the plinth's footprint, the doors facing +Z. The lock, the hasp and the tools on the shelves are modelled solid. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-tool-store-eab404b4","cdnUrl":"https://cdn.3dassets.dev/assets/37959/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-tool-store-eab404b4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37959/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37959/v1/poster.webp","blurhash":"U97e@*ko00Vr%gkXRjZ~Q8V_h2t7o#nhV?W?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":14488,"triangles":204,"vertices":476,"meshes":8,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.84997132355509,0,-0.4000363221817408],"max":[0.84997132355509,2.2200000286102295,0.4699807664136988]},"sizeMeters":[1.7,2.22,0.87],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:07.073Z","updatedAt":"2026-09-12T06:06:07.180Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37959/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function SiteToolStoreCabinetShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37959/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37959/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37959/v1/model.glb\" alt=\"Site tool store cabinet (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37959/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37959/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37960","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-fitters-wo-14a123d7","title":"Fitters workbench with vice (Shipyard and Dry Dock)","summary":"A steel workbench 2.4 m long with a scarred hardwood top, a bench vice bolted at one end, a tool panel behind it hung with spanners and files, a drawer unit under and an open shelf of stock below.","description":"A steel workbench 2.4 m long with a scarred hardwood top, a bench vice bolted at one end, a tool panel behind it hung with spanners and files, a drawer unit under and an open shelf of stock below. Overall 2.40 by 1.96 by 0.92 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the bench's footprint, the working side toward +Z. Static bench: the vice does not open and the drawers do not pull out on this model. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-fitters-wo-14a123d7","cdnUrl":"https://cdn.3dassets.dev/assets/37960/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-fitters-wo-14a123d7","thumbnailUrl":"https://cdn.3dassets.dev/assets/37960/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37960/v1/poster.webp","blurhash":"UFCjY3IU00-p~WW?8_Vr8^t6t5IUIpx^tRIU","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"interior","title":"Interior"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18396,"triangles":336,"vertices":780,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.2000000476837158,-0.00003250035891244618,-0.46122407211284056],"max":[1.2000000476837158,1.9600325385058852,0.4599571366865947]},"sizeMeters":[2.4,1.96,0.921],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:07.301Z","updatedAt":"2026-09-12T06:06:07.486Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37960/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FittersWorkbenchWithViceShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37960/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37960/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37960/v1/model.glb\" alt=\"Fitters workbench with vice (Shipyard and Dry Dock)\" 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/37960/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/37960/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37961","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-site-offic-1989bef0","title":"Site office cabin (Shipyard and Dry Dock)","summary":"A 6 m portable site office on a steel chassis: profiled cladding, two double glazed windows, a hinged half glazed door with a railed step, a blank name board and a roof with a gutter. The door opens.","description":"A 6 m portable site office on a steel chassis: profiled cladding, two double glazed windows, a hinged half glazed door with a railed step, a blank name board and a roof with a gutter. The door opens. Overall 6.10 by 3.06 by 3.75 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the cabin's footprint, the door and windows facing +Z. The windows are fixed lights, the steps and the handrail are solid, and the cabin is modelled as delivered rather than as a mechanism. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-site-offic-1989bef0","cdnUrl":"https://cdn.3dassets.dev/assets/37961/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-site-offic-1989bef0","thumbnailUrl":"https://cdn.3dassets.dev/assets/37961/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37961/v1/poster.webp","blurhash":"U6DT07Wn00IWx^~qxuD%00xuyD%M-o008_%N","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":32792,"triangles":636,"vertices":1484,"meshes":8,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-3.049999952316284,-0.00007294392670864625,-1.3998466509413077],"max":[3.049999952316284,3.0600728867062497,2.349846579415734]},"sizeMeters":[6.1,3.06,3.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:08.220Z","updatedAt":"2026-09-12T06:06:08.321Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37961/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function SiteOfficeCabinShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37961/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37961/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37961/v1/model.glb\" alt=\"Site office cabin (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37961/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37961/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37962","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-mess-cabin-5de93af5","title":"Mess and drying room cabin (Shipyard and Dry Dock)","summary":"The same 6 m cabin fitted out as a mess room: one long window band over the tables, a closed serving hatch with a shelf under it, a blank notice board and the same hinged door with its railed step.","description":"The same 6 m cabin fitted out as a mess room: one long window band over the tables, a closed serving hatch with a shelf under it, a blank notice board and the same hinged door with its railed step. Overall 6.10 by 3.06 by 3.75 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the cabin's footprint, the door and hatch facing +Z. The serving hatch is modelled closed and solid; only the door opens. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-mess-cabin-5de93af5","cdnUrl":"https://cdn.3dassets.dev/assets/37962/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-mess-cabin-5de93af5","thumbnailUrl":"https://cdn.3dassets.dev/assets/37962/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37962/v1/poster.webp","blurhash":"U6DJbYbE00IWx^~qxuD%00tRx^%L%L008_xv","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":32980,"triangles":624,"vertices":1456,"meshes":8,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-3.049999952316284,-0.00007294392670864625,-1.3998466509413077],"max":[3.049999952316284,3.0600728867062497,2.349846579415734]},"sizeMeters":[6.1,3.06,3.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:07.803Z","updatedAt":"2026-09-12T06:06:07.901Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37962/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function MessAndDryingRoomCabinShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37962/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37962/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37962/v1/model.glb\" alt=\"Mess and drying room cabin (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37962/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37962/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37963","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-store-cont-8b08858a","title":"Yard store container, 6 m (Shipyard and Dry Dock)","summary":"A 6 m steel store container with corrugated sides, corner castings, a plywood lined floor and twin doors on cam locking bars, marked only with an invented blank panel. Both doors swing open.","description":"A 6 m steel store container with corrugated sides, corner castings, a plywood lined floor and twin doors on cam locking bars, marked only with an invented blank panel. Both doors swing open. Overall 6.06 by 2.68 by 2.66 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the container's footprint, the doors facing +Z. The cam bars and the keeper lugs are modelled solid and turn with the doors rather than on their own. Rigid node-transform clips: open and close. No skinning. No collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-store-cont-8b08858a","cdnUrl":"https://cdn.3dassets.dev/assets/37963/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-store-cont-8b08858a","thumbnailUrl":"https://cdn.3dassets.dev/assets/37963/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37963/v1/poster.webp","blurhash":"U58hwlcG4TMx=W.TTMM_00m+yEb_B?d.U[Na","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"slug":"kit","title":"Kit / Set"},{"slug":"animated","title":"Animated"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37444,"triangles":732,"vertices":1708,"meshes":7,"materials":5,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-3.0311999320983887,-0.00011413818523742236,-1.3000657725120246],"max":[3.0311999320983887,2.6813141656510577,1.3600276953806814]},"sizeMeters":[6.062,2.681,2.66],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:08.796Z","updatedAt":"2026-09-12T06:06:08.899Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37963/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n  mixer = new AnimationMixer(gltf.scene)\n  mixer.clipAction(gltf.animations[0]).play()\n})\n\n// Call from your render loop; deltaSeconds is time since the previous frame.\nfunction updateAssetAnimation(deltaSeconds) {\n  mixer?.update(deltaSeconds)\n}","r3f":"import { useGLTF, useAnimations } from '@react-three/drei'\nimport { useEffect } from 'react'\n\nexport function YardStoreContainer6MShipyardAndDryDock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/37963/v1/model.glb')\n  const { actions, names } = useAnimations(animations, scene)\n  useEffect(() => {\n    const action = actions[names[0]]\n    action?.reset().play()\n    return () => { action?.stop() }\n  }, [actions, names])\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37963/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37963/v1/model.glb\" alt=\"Yard store container, 6 m (Shipyard and Dry Dock)\" camera-controls auto-rotate autoplay></model-viewer>","blender":"# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.\nimport bpy\nbpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/37963/v1/model.glb\n# Metres and +Y up are converted to Blender's Z-up scene automatically.\n# Clips arrive as actions; play them from the Dope Sheet > Action Editor.","godot":"# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.\nvar packed := load(\"res://models/model.glb\") as PackedScene\nvar model := packed.instantiate()\nadd_child(model)\nvar player := model.find_child(\"AnimationPlayer\", true, false) as AnimationPlayer\nplayer.play(player.get_animation_list()[0])","unity":"// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,\n// or load it at runtime straight from the CDN:\nusing GLTFast;\nvar gltf = new GltfImport();\nif (await gltf.Load(\"https://cdn.3dassets.dev/assets/37963/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"37964","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-mooring-bo-efff02ba","title":"Quay mooring bollard with rope (Shipyard and Dry Dock)","summary":"A cast steel kidney bollard 0.9 m tall on a bolted base plate, with a cream mooring rope dressed over it in a loose eye and run off toward the water, for the quay edge outside a dock gate.","description":"A cast steel kidney bollard 0.9 m tall on a bolted base plate, with a cream mooring rope dressed over it in a loose eye and run off toward the water, for the quay edge outside a dock gate. Overall 0.79 by 0.90 by 1.83 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base plate on the quay surface, the rope running off toward +Z. The rope is modelled solid in one dressed pose: rope is a soft body and there is no skinning in this library, so it never slackens or pays out. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-mooring-bo-efff02ba","cdnUrl":"https://cdn.3dassets.dev/assets/37964/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-mooring-bo-efff02ba","thumbnailUrl":"https://cdn.3dassets.dev/assets/37964/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37964/v1/poster.webp","blurhash":"U79jy9Di00WY%N9FWA?b00xu~qxut7_3Rj4n","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":17284,"triangles":336,"vertices":766,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.3970705552564555,0,-0.3801887631416321],"max":[0.3970705552564555,0.8999999761581421,1.4449933767318726]},"sizeMeters":[0.794,0.9,1.825],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:09.088Z","updatedAt":"2026-09-12T06:06:09.183Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37964/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function QuayMooringBollardWithRopeShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37964/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37964/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37964/v1/model.glb\" alt=\"Quay mooring bollard with rope (Shipyard and Dry Dock)\" 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/37964/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/37964/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37965","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-fire-point-5e4e2306","title":"Yard fire point (Shipyard and Dry Dock)","summary":"A red fire point stand with two extinguishers on a shaped rack, a call point, a blank instruction board above them and a sand bucket on a hook, for the dock side of a working shipyard.","description":"A red fire point stand with two extinguishers on a shaped rack, a call point, a blank instruction board above them and a sand bucket on a hook, for the dock side of a working shipyard. Overall 1.11 by 1.86 by 0.50 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the stand's footprint, the extinguishers facing +Z. Static stand: the extinguishers do not lift out and the call point does not press. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-fire-point-5e4e2306","cdnUrl":"https://cdn.3dassets.dev/assets/37965/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-fire-point-5e4e2306","thumbnailUrl":"https://cdn.3dassets.dev/assets/37965/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37965/v1/poster.webp","blurhash":"U7EK[qRj00%LQ7SNQ9$N9ZOE%MrqdC%1uPE1","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":15348,"triangles":292,"vertices":663,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.6499857970681922,0,-0.25001892339875115],"max":[0.45998582925470033,1.8600000143051147,0.25001892339875115]},"sizeMeters":[1.11,1.86,0.5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:10.456Z","updatedAt":"2026-09-12T06:06:10.645Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37965/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YardFirePointShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37965/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37965/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37965/v1/model.glb\" alt=\"Yard fire point (Shipyard and Dry Dock)\" 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/37965/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/37965/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37966","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-eyewash-st-6e8b6c70","title":"Emergency eyewash and shower (Shipyard and Dry Dock)","summary":"A plumbed emergency shower and eyewash station on a green backed stand: an overhead rose on a pull rod, a bowl with two spray heads, a foot treadle, a blank instruction sign and a floor drain grating.","description":"A plumbed emergency shower and eyewash station on a green backed stand: an overhead rose on a pull rod, a bowl with two spray heads, a foot treadle, a blank instruction sign and a floor drain grating. Overall 1.07 by 2.36 by 0.86 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base's footprint, the bowl facing +Z. Static station: the pull rod, the treadle and the heads are modelled solid, and no water is modelled, because a jet is an effect rather than geometry. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-eyewash-st-6e8b6c70","cdnUrl":"https://cdn.3dassets.dev/assets/37966/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-eyewash-st-6e8b6c70","thumbnailUrl":"https://cdn.3dassets.dev/assets/37966/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37966/v1/poster.webp","blurhash":"U58}Mh-p000epdI9Mc.T00IU~X?v4.WV?Ht8","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":16324,"triangles":308,"vertices":708,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.4000304622626972,0,-0.4599596941278304],"max":[0.6699270493047,2.359999895095825,0.4000579938390277]},"sizeMeters":[1.07,2.36,0.86],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:09.955Z","updatedAt":"2026-09-12T06:06:10.137Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37966/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EmergencyEyewashAndShowerShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37966/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37966/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37966/v1/model.glb\" alt=\"Emergency eyewash and shower (Shipyard and Dry Dock)\" 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/37966/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/37966/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37967","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-muster-boa-10a1280b","title":"Muster point board, blank (Shipyard and Dry Dock)","summary":"A free standing yard notice board on two posts with a blank white face and a blank header panel above it, for a project to letter its own muster instructions and permit notices onto.","description":"A free standing yard notice board on two posts with a blank white face and a blank header panel above it, for a project to letter its own muster instructions and permit notices onto. Overall 2.20 by 2.60 by 1.29 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the base's footprint, the blank face toward +Z. Static board: the face is deliberately blank so nothing is lettered, and it carries no logo, name or mark of any kind. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-muster-boa-10a1280b","cdnUrl":"https://cdn.3dassets.dev/assets/37967/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-muster-boa-10a1280b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37967/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37967/v1/poster.webp","blurhash":"UFB42cxu00M{?wxuDiIT0Kf,^+V?4nR-?bxY","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":8212,"triangles":120,"vertices":278,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.100000023841858,0.000039367658891426016,-0.6428504351158967],"max":[1.100000023841858,2.5999678772289725,0.6428504351158967]},"sizeMeters":[2.2,2.6,1.286],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:10.490Z","updatedAt":"2026-09-12T06:06:10.682Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37967/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MusterPointBoardBlankShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37967/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37967/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37967/v1/model.glb\" alt=\"Muster point board, blank (Shipyard and Dry Dock)\" 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/37967/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/37967/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37968","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-launch-cra-3875da9f","title":"Slipway launch cradle (Shipyard and Dry Dock)","summary":"A welded launch cradle 6 m long on four grooved slipway wheels: a keel beam with timber packing, four adjustable side arms with pivoting pads, a towing eye at each end and a hand winch tie.","description":"A welded launch cradle 6 m long on four grooved slipway wheels: a keel beam with timber packing, four adjustable side arms with pivoting pads, a towing eye at each end and a hand winch tie. Overall 5.60 by 2.03 by 2.73 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the cradle's footprint; it rests on y=0 and the keel packing takes a hull at 1.1 m. The side arms are modelled at one setting and the wheels do not turn: a cradle is hauled on a wire, and the wire is a soft body. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-launch-cra-3875da9f","cdnUrl":"https://cdn.3dassets.dev/assets/37968/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-launch-cra-3875da9f","thumbnailUrl":"https://cdn.3dassets.dev/assets/37968/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37968/v1/poster.webp","blurhash":"U6Bf96?G03RjNH={t7Ip009t~9oext0zNF$%","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":27764,"triangles":592,"vertices":1328,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-2.799999952316284,-0.0001361524923773061,-1.365263782436841],"max":[2.799999952316284,2.0346219207630254,1.365263782436841]},"sizeMeters":[5.6,2.035,2.731],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:11.825Z","updatedAt":"2026-09-12T06:06:11.965Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37968/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SlipwayLaunchCradleShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37968/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37968/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37968/v1/model.glb\" alt=\"Slipway launch cradle (Shipyard and Dry Dock)\" 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/37968/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/37968/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37969","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-harbour-tu-af268e04","title":"Harbour tug (Shipyard and Dry Dock)","summary":"A 22 m harbour tug: a full lofted hull in antifouling red below the waterline and grey above, a deckhouse with a raised wheelhouse, a funnel, a mast, a towing hook aft and heavy tyre fendering all round.","description":"A 22 m harbour tug: a full lofted hull in antifouling red below the waterline and grey above, a deckhouse with a raised wheelhouse, a funnel, a mast, a towing hook aft and heavy tyre fendering all round. Overall 8.60 by 11.34 by 22.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the keel amidships and the hull is modelled to the keel, so it rests on y=0 for a dock or a cradle; set it into water by its 2.2 m draught. Static vessel: the propellers, the towing hook and the fenders are modelled solid, and no part of the tug is rigged here. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-harbour-tu-af268e04","cdnUrl":"https://cdn.3dassets.dev/assets/37969/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-harbour-tu-af268e04","thumbnailUrl":"https://cdn.3dassets.dev/assets/37969/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37969/v1/poster.webp","blurhash":"UBCZO+Nd00nh9[D%xF%M00xa_NS#=x_3NxDi","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":43924,"triangles":846,"vertices":1929,"meshes":9,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-4.300152569711818,0.0006960432759448576,-11],"max":[4.300152569711818,11.340176878173612,11]},"sizeMeters":[8.6,11.339,22],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:11.724Z","updatedAt":"2026-09-12T06:06:11.845Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37969/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function HarbourTugShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37969/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37969/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37969/v1/model.glb\" alt=\"Harbour tug (Shipyard and Dry Dock)\" 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/37969/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/37969/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37970","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-yard-work--8e4d3aa4","title":"Yard work boat (Shipyard and Dry Dock)","summary":"A 9 m open work boat for running lines and crew round a basin: a lofted hull with a red underbody, a low bulwark, a centre console with a windscreen, a bench seat, a bow roller and a fendered rubbing strake.","description":"A 9 m open work boat for running lines and crew round a basin: a lofted hull with a red underbody, a low bulwark, a centre console with a windscreen, a bench seat, a bow roller and a fendered rubbing strake. Overall 3.04 by 3.90 by 9.00 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is on the keel amidships and the hull is modelled to the keel, so it rests on y=0 for a cradle or a hard standing; set it into water by its 0.7 m draught. Static vessel: the outboard, the console and the bow roller are modelled solid, and nothing on the boat is rigged. Static geometry; no rig, collision or navigation data. Original CC0 geometry: no shipyard, shipping line, shipbuilder, class society or equipment maker is named or depicted, no real vessel is reproduced, and every sign, plate and board face is left blank.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-work--8e4d3aa4","cdnUrl":"https://cdn.3dassets.dev/assets/37970/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-yard-work--8e4d3aa4","thumbnailUrl":"https://cdn.3dassets.dev/assets/37970/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37970/v1/poster.webp","blurhash":"U9Ci:eyC00R5FyDjVXxs00rq~qo~+b_N%#M{","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"},{"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":30336,"triangles":538,"vertices":1229,"meshes":9,"materials":9,"textures":0,"animations":[],"boundingBox":{"min":[-1.5200438645992944,0.00016281147968288945,-4.5],"max":[1.5200438645992944,3.8996611300992416,4.5]},"sizeMeters":[3.04,3.899,9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:12.301Z","updatedAt":"2026-09-12T06:06:12.398Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37970/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function YardWorkBoatShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37970/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37970/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37970/v1/model.glb\" alt=\"Yard work boat (Shipyard and Dry Dock)\" 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/37970/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/37970/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37971","slug":"shipyard-and-dry-dock-shipyard-and-dry-d-68bbd49e-starter-scene","title":"Graving dock with a hull in three sections (Shipyard and Dry Dock)","summary":"A working shipyard seen from its dock side: a 16 m graving dock pumped dry, its stepped altar walls running back to the head and its steel gate caisson closed against the basin. A hull sits on the blocks in it, made up of a stern module with its rudder and propeller drawn and...","description":"A working shipyard seen from its dock side: a 16 m graving dock pumped dry, its stepped altar walls running back to the head and its steel gate caisson closed against the basin. A hull sits on the blocks in it, made up of a stern module with its rudder and propeller drawn and stood beside it, a parallel midbody and a bulbous bow, with shores wedged to the dock sides, staging towers and scaffold runs along the plating and an access stair down to the bottom. A portal gantry strides the dock on rails, a pillar jib crane works the quay and a crawler crane stands on the east apron beside the fabrication shed, which is roofed at its ends and holds the plate roller, press brake, cutting table, welding bay, grinder and benches under its own travelling crane. Plate stacks, racks, gas, air, power and blasting plant fill the apron between them, the yard cabins and the store stand on the west side, and a work boat waits on its cradle by the slipway while a tug lies off the gate.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-d-68bbd49e-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/37971/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-d-68bbd49e-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/37971/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37971/v1/poster.webp","blurhash":"U5A^Uax]00ITV@RPIUW=00sm~paf-;%h%goH","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":1207584,"triangles":23630,"vertices":53610,"meshes":377,"materials":12,"textures":1,"animations":[],"boundingBox":{"min":[-19,-6.200100709591155,-26],"max":[22.001199960708618,16.999935940936243,30.30015256971182]},"sizeMeters":[41.001,23.2,56.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:14.113Z","updatedAt":"2026-09-12T06:06:14.570Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37971/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GravingDockWithAHullInThreeSectionsShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37971/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37971/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37971/v1/model.glb\" alt=\"Graving dock with a hull in three sections (Shipyard and Dry Dock)\" 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/37971/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/37971/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"37972","slug":"shipyard-and-dry-dock-shipyard-and-dry-dock-plate-shop-b90eef2b","title":"Plate shop inside the fabrication shed (Shipyard and Dry Dock)","summary":"The inside of the yard's fabrication shed, closer in: four bays over the plate roller, the press brake and the cutting table, with the underslung travelling crane over them, a welding bay screened off at one side, the fitters bench and tool store at the door end, and plate,...","description":"The inside of the yard's fabrication shed, closer in: four bays over the plate roller, the press brake and the cutting table, with the underslung travelling crane over them, a welding bay screened off at one side, the fitters bench and tool store at the door end, and plate, pipe and gas stock against the walls. The roof is left off the middle bays so the shop can be read from above.","status":"published","url":"https://3dassets.dev/assets/shipyard-and-dry-dock-shipyard-and-dry-dock-plate-shop-b90eef2b","cdnUrl":"https://cdn.3dassets.dev/assets/37972/v1/model.glb","downloadUrl":"https://3dassets.dev/download/shipyard-and-dry-dock-shipyard-and-dry-dock-plate-shop-b90eef2b","thumbnailUrl":"https://cdn.3dassets.dev/assets/37972/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/37972/v1/poster.webp","blurhash":"U5EMI4Ip00?GD$4nxu_N00M_~Wt7.T?w$$MI","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":378896,"triangles":7332,"vertices":16507,"meshes":121,"materials":10,"textures":1,"animations":[],"boundingBox":{"min":[-7.2000000238418576,-0.14007049745886635,-8.001428664125354],"max":[6.999999976158142,7.549776350752599,8.0498778810215]},"sizeMeters":[14.2,7.69,16.051],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_materials_transmission","KHR_mesh_quantization","EXT_texture_webp"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T06:06:13.578Z","updatedAt":"2026-09-12T06:06:13.761Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/37972/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlateShopInsideTheFabricationShedShipyardAndDryDock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/37972/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/37972/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/37972/v1/model.glb\" alt=\"Plate shop inside the fabrication shed (Shipyard and Dry Dock)\" 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/37972/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/37972/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"shipyard-and-dry-dock","title":"Shipyard and Dry Dock","url":"https://3dassets.dev/demos/shipyard-and-dry-dock"}}}