{"data":{"id":137,"slug":"steam-era-railway-and-rolling-stock","title":"Steam Era Railway and Rolling Stock","summary":"Original steam locomotives, tenders, carriages, goods wagons, modular track and lineside structures for a working steam-age railway.","description":"A complete steam-age railway kit: six original locomotives at hero density with lathed boilers, lofted fireboxes, outside cylinders and named wheel, rod and motion pivots; tenders, carriages and goods wagons that couple buffer to buffer; modular 1,435 mm track on a 4 m grid with turnouts, a diamond, a buffer stop, a level crossing and a girder bridge; a 610 mm narrow gauge line; and the signal box, water tower, coaling stage, turntable, engine shed, platforms and yard props that make a railway work. Metre units, +Y up, +Z forward. Wheels and carrying axles carry a wheel-roll clip on their own axle, coupling rods travel the crank circle on the same clip without ever rotating, semaphore arms clear on a trigger clip and level crossing gates open and close: rigid node transforms only, no skinning. The valve gear is left static, because no single rigid node reproduces a linkage honestly. CC0 geometry with no collision or navigation data.","url":"https://3dassets.dev/packs/steam-era-railway-and-rolling-stock","coverUrl":"https://cdn.3dassets.dev/assets/14778/v1/poster.webp","assetCount":64,"aiGenerated":true,"aiGeneratedAssetCount":64,"aiModels":["Claude Fable 5.1"],"aiModelUnspecifiedCount":0,"featured":true,"licenseLabel":"CC0 1.0 Universal","totalBytes":9544424,"totalTriangles":250792,"starterScene":{"id":"14778","slug":"steam-era-railway-and-rolling-stock-stat-d2357295-starter-scene","title":"Country station with a passenger train at the platform (Steam Era Railway and Rolling Stock)","summary":"Composed example for Steam Era Railway and Rolling Stock.","description":"A through station: a 4-6-0 and tender at the head of two carriages standing at the up platform, opposite platform, canopies, signal box, footbridge, semaphore signals, nameboard, water crane, lamps and platform traffic. Track modules chain on the 4 m grid and every vehicle stands at y=0.47 on the railhead.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-stat-d2357295-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/14778/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-stat-d2357295-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/14778/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14778/v1/poster.webp","blurhash":"U47-Td${4-EMD+9Gof%L00xu^,nh?G~pM{E1","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"historical","title":"Historical"},{"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":1099904,"triangles":30888,"vertices":67373,"meshes":138,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-7.989999771118164,-0.00016542366638283568,-8],"max":[9.84990993883298,7.819987174505411,52]},"sizeMeters":[17.84,7.82,60],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":1,"publishedAt":"2026-09-07T15:55:55.558Z","updatedAt":"2026-09-07T18:31:43.141Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14778/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CountryStationWithAPassengerTrainAtThePlatformSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14778/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14778/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14778/v1/model.glb\" alt=\"Country station with a passenger train at the platform (Steam Era Railway and Rolling Stock)\" 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/14778/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/14778/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},"assets":[{"id":"14716","slug":"steam-era-railway-and-rolling-stock-goods-0-6-0-673ef503","title":"Steam goods locomotive 0-6-0 (Steam Era Railway and Rolling Stock)","summary":"An original 1930s inside-framed 0-6-0 goods locomotive with outside cylinders and full valve gear.","description":"A 9.0 m 0-6-0 goods locomotive of a generic 1930s mixed-traffic design: lathed boiler barrel with cleading bands, smokebox with a hinged door and dart, brass dome and safety valves, lofted firebox, side-window cab, and outside cylinders driving the middle axle through crosshead, connecting rod, coupling rods and a simplified Walschaerts gear. Driving wheels are 1.56 m across the treads. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.70 x 3.97 x 9.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, wheel-driver-3-right, wheel-driver-3-left, coupling-rod-right, motion-right, coupling-rod-left, motion-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-goods-0-6-0-673ef503","cdnUrl":"https://cdn.3dassets.dev/assets/14716/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-goods-0-6-0-673ef503","thumbnailUrl":"https://cdn.3dassets.dev/assets/14716/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14716/v1/poster.webp","blurhash":"U168a2*~00TKP-4Tj0?]00E1.lxsy_%z.5^7","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":270752,"triangles":7396,"vertices":22188,"meshes":26,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.3500143467359491,-2.6666836405730976e-8,-4.5],"max":[1.3500143467359491,3.9739503692139215,4.5]},"sizeMeters":[2.7,3.974,9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:41.316Z","updatedAt":"2026-09-07T15:55:41.430Z","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/14716/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 SteamGoodsLocomotive060SteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14716/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/14716/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14716/v1/model.glb\" alt=\"Steam goods locomotive 0-6-0 (Steam Era Railway and Rolling Stock)\" 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/14716/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/14716/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14721","slug":"steam-era-railway-and-rolling-stock-mixed-traffic-4-6--f590c812","title":"Steam mixed traffic locomotive 4-6-0 (Steam Era Railway and Rolling Stock)","summary":"An original two-cylinder 4-6-0 with a leading bogie, splashers and a long parallel boiler.","description":"A 12.4 m 4-6-0 mixed traffic locomotive with a two-axle leading bogie, three coupled axles on 1.84 m wheels, curved splashers over the running plate, tapered boiler, brass dome, side-window cab and outside cylinders with a full set of motion. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.78 x 4.00 x 12.40 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, wheel-driver-3-right, wheel-driver-3-left, wheel-bogie-1-right, wheel-bogie-1-left, wheel-bogie-2-right, wheel-bogie-2-left and 4 more. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-mixed-traffic-4-6--f590c812","cdnUrl":"https://cdn.3dassets.dev/assets/14721/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-mixed-traffic-4-6--f590c812","thumbnailUrl":"https://cdn.3dassets.dev/assets/14721/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14721/v1/poster.webp","blurhash":"U26b3}=g4Tk?%|4U4oOs00NF?^-:8x.7~p^4","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":332632,"triangles":9272,"vertices":27816,"meshes":34,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.3902219028480467,0,-6.199999809265137],"max":[1.3902219028480467,4.000016378129256,6.199999809265137]},"sizeMeters":[2.78,4,12.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:40.434Z","updatedAt":"2026-09-07T15:55:40.546Z","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/14721/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 SteamMixedTrafficLocomotive460SteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14721/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/14721/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14721/v1/model.glb\" alt=\"Steam mixed traffic locomotive 4-6-0 (Steam Era Railway and Rolling Stock)\" 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/14721/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/14721/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14718","slug":"steam-era-railway-and-rolling-stock-express-pacific-4--e04974dc","title":"Steam express locomotive 4-6-2 (Steam Era Railway and Rolling Stock)","summary":"An original express pacific with a wide firebox, trailing truck, high running plate and smoke deflectors.","description":"A 13.8 m 4-6-2 express passenger locomotive: leading bogie, three coupled axles on 2.04 m wheels, a trailing truck under a wide firebox, high running plate, short chimney and smoke deflectors either side of the smokebox. Outside cylinders drive the middle axle through a full outside motion. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.86 x 4.06 x 13.80 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, wheel-driver-3-right, wheel-driver-3-left, wheel-bogie-1-right, wheel-bogie-1-left, wheel-bogie-2-right, wheel-bogie-2-left and 6 more. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-express-pacific-4--e04974dc","cdnUrl":"https://cdn.3dassets.dev/assets/14718/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-express-pacific-4--e04974dc","thumbnailUrl":"https://cdn.3dassets.dev/assets/14718/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14718/v1/poster.webp","blurhash":"U36bDNZ~8w.SugD%Myt+00Z*%zj:hhx]x[,p","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":339272,"triangles":9628,"vertices":28884,"meshes":38,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.4296823124913647,-1.4305114759416426e-8,-6.900000095367432],"max":[1.4296823124913647,4.060100087127273,6.900000095367432]},"sizeMeters":[2.859,4.06,13.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.460Z","updatedAt":"2026-09-07T15:55:42.559Z","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/14718/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 SteamExpressLocomotive462SteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14718/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/14718/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14718/v1/model.glb\" alt=\"Steam express locomotive 4-6-2 (Steam Era Railway and Rolling Stock)\" 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/14718/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/14718/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14715","slug":"steam-era-railway-and-rolling-stock-tank-shunter-0-4-0-a1b70a58","title":"Steam side tank shunting locomotive 0-4-0 (Steam Era Railway and Rolling Stock)","summary":"A short-wheelbase 0-4-0 side tank shunter with inside cylinders and a rear coal bunker.","description":"A 6.8 m 0-4-0 side tank shunting locomotive for yard work: side tanks flanking the boiler, an inside cylinder block between the frames, a spacious cab and a rear coal bunker. Coupling rods link the two driving axles on 1.24 m wheels. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.66 x 3.36 x 6.80 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, coupling-rod-right, coupling-rod-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-tank-shunter-0-4-0-a1b70a58","cdnUrl":"https://cdn.3dassets.dev/assets/14715/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-tank-shunter-0-4-0-a1b70a58","thumbnailUrl":"https://cdn.3dassets.dev/assets/14715/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14715/v1/poster.webp","blurhash":"U15rDA[C00M,p{DiEKjL009?YMx^.=_1,:?c","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":225168,"triangles":5520,"vertices":16560,"meshes":16,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.3301457340536065,-1.4040715035079643e-8,-3.4000000953674316],"max":[1.3301457340536065,3.3551664458130785,3.4000000953674316]},"sizeMeters":[2.66,3.355,6.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:41.257Z","updatedAt":"2026-09-07T15:55:41.355Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14715/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 SteamSideTankShuntingLocomotive040SteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14715/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/14715/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14715/v1/model.glb\" alt=\"Steam side tank shunting locomotive 0-4-0 (Steam Era Railway and Rolling Stock)\" 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/14715/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/14715/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14722","slug":"steam-era-railway-and-rolling-stock-narrow-gauge-saddl-3e7188f3","title":"Narrow gauge saddle tank locomotive (Steam Era Railway and Rolling Stock)","summary":"A 610 mm gauge 0-4-0 saddle tank for industrial and quarry lines, with a centre buffer coupling.","description":"A 4.4 m industrial 0-4-0 saddle tank built to 610 mm gauge: a saddle water tank draped over the boiler, outside cylinders clear of the wheels, an open-backed cab and a central buffer with a link coupling at 0.45 m above rail. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.32 over a matching track module. Coupler ports sit on the buffer faces at y=0.48. Bounding size 1.46 x 2.40 x 4.40 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, coupling-rod-right, motion-right, coupling-rod-left, motion-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-narrow-gauge-saddl-3e7188f3","cdnUrl":"https://cdn.3dassets.dev/assets/14722/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-narrow-gauge-saddl-3e7188f3","thumbnailUrl":"https://cdn.3dassets.dev/assets/14722/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14722/v1/poster.webp","blurhash":"U26H=ZIAHXlSQ69FIA%M00rWQ5%f_-x@.7%4","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":207516,"triangles":5112,"vertices":15336,"meshes":22,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-0.7300844004561162,1.1840562974541058e-8,-2.200000047683716],"max":[0.7300844004561162,2.4000467773424927,2.200000047683716]},"sizeMeters":[1.46,2.4,4.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:40.763Z","updatedAt":"2026-09-07T15:55:40.874Z","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/14722/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 NarrowGaugeSaddleTankLocomotiveSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14722/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/14722/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14722/v1/model.glb\" alt=\"Narrow gauge saddle tank locomotive (Steam Era Railway and Rolling Stock)\" 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/14722/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/14722/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14719","slug":"steam-era-railway-and-rolling-stock-vertical-boiler-in-a7556426","title":"Vertical boiler industrial locomotive (Steam Era Railway and Rolling Stock)","summary":"A small four-wheel works engine with a vertical boiler, twin vertical cylinders and an exposed flywheel.","description":"A 3.9 m standard gauge industrial locomotive of the vertical-boiler type: a lagged vertical boiler with a tall chimney, two vertical cylinders driving a crankshaft through an exposed flywheel, an open canopy on four corner posts and coupling rods between the axles. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.14 x 2.96 x 3.90 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, coupling-rod-right, coupling-rod-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-vertical-boiler-in-a7556426","cdnUrl":"https://cdn.3dassets.dev/assets/14719/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-vertical-boiler-in-a7556426","thumbnailUrl":"https://cdn.3dassets.dev/assets/14719/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14719/v1/poster.webp","blurhash":"U16H$E={00XVy=9ZH[=y004.GZ-l{~^lbvK#","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":174164,"triangles":4304,"vertices":12912,"meshes":16,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.0700552230402698,1.7419365949677967e-9,-1.9500000476837158],"max":[1.0700552230402698,2.9566457271575928,1.9500000476837158]},"sizeMeters":[2.14,2.957,3.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:40.422Z","updatedAt":"2026-09-07T15:55:40.533Z","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/14719/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 VerticalBoilerIndustrialLocomotiveSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14719/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/14719/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14719/v1/model.glb\" alt=\"Vertical boiler industrial locomotive (Steam Era Railway and Rolling Stock)\" 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/14719/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/14719/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14717","slug":"steam-era-railway-and-rolling-stock-six-wheel-tender-af17bb59","title":"Six wheel locomotive tender (Steam Era Railway and Rolling Stock)","summary":"A six-wheel tender with a coal space, curved side coping, water filler and rear steps.","description":"A 7.0 m six-wheel locomotive tender: a water tank wrapped around an open coal space, curved side coping, water filler dome, rear footsteps and grab rails, on three axles with journal axleboxes and leaf springs. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.70 x 3.38 x 7.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left, wheel-3-right, wheel-3-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-six-wheel-tender-af17bb59","cdnUrl":"https://cdn.3dassets.dev/assets/14717/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-six-wheel-tender-af17bb59","thumbnailUrl":"https://cdn.3dassets.dev/assets/14717/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14717/v1/poster.webp","blurhash":"U25#|b?^DiI=.lI;Rox[00H?MyMxL~$~rYw4","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":135292,"triangles":3812,"vertices":11436,"meshes":19,"materials":7,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.3500572321860032,2.8610229518832853e-8,-3.5],"max":[1.3500572321860032,3.3799224731690547,3.5]},"sizeMeters":[2.7,3.38,7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:41.385Z","updatedAt":"2026-09-07T15:55:41.498Z","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/14717/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 SixWheelLocomotiveTenderSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14717/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/14717/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14717/v1/model.glb\" alt=\"Six wheel locomotive tender (Steam Era Railway and Rolling Stock)\" 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/14717/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/14717/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14720","slug":"steam-era-railway-and-rolling-stock-bogie-tender-e8ef03f1","title":"Bogie locomotive tender (Steam Era Railway and Rolling Stock)","summary":"An eight-wheel bogie tender for express work, with high coping sides and a deep coal space.","description":"An 8.8 m bogie locomotive tender on two four-wheel bogies: deep water tank, tall coping sides, a coal space with a heaped load, rear ladder and steps. Suits the express pacific and the 4-6-0. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.76 x 3.63 x 8.80 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: bogie-front-wheel-1-right, bogie-front-wheel-1-left, bogie-front-wheel-2-right, bogie-front-wheel-2-left, bogie-rear-wheel-1-right, bogie-rear-wheel-1-left, bogie-rear-wheel-2-right, bogie-rear-wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-bogie-tender-e8ef03f1","cdnUrl":"https://cdn.3dassets.dev/assets/14720/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-bogie-tender-e8ef03f1","thumbnailUrl":"https://cdn.3dassets.dev/assets/14720/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14720/v1/poster.webp","blurhash":"U25YQY?^Mds.yED%DijE00MeRiR6Zh-:%2wO","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":139408,"triangles":4492,"vertices":13476,"meshes":22,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.380055407243452,9.536743172944284e-9,-4.400000095367432],"max":[1.380055407243452,3.6300682059125124,4.400000095367432]},"sizeMeters":[2.76,3.63,8.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:40.408Z","updatedAt":"2026-09-07T15:55:40.530Z","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/14720/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 BogieLocomotiveTenderSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14720/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/14720/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14720/v1/model.glb\" alt=\"Bogie locomotive tender (Steam Era Railway and Rolling Stock)\" 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/14720/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/14720/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14724","slug":"steam-era-railway-and-rolling-stock-compartment-coach-3fe695bf","title":"Compartment carriage (Steam Era Railway and Rolling Stock)","summary":"A bogie compartment carriage with eight doors a side, crimson and cream panels and a roof of torpedo vents.","description":"A 15.0 m bogie compartment carriage: eight compartment doors per side each with a droplight, fixed quarterlights between, waist and cantrail beading, arched roof with torpedo ventilators, trussed underframe and footboards. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 3.26 x 3.92 x 15.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: bogie-front-wheel-1-right, bogie-front-wheel-1-left, bogie-front-wheel-2-right, bogie-front-wheel-2-left, bogie-rear-wheel-1-right, bogie-rear-wheel-1-left, bogie-rear-wheel-2-right, bogie-rear-wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-compartment-coach-3fe695bf","cdnUrl":"https://cdn.3dassets.dev/assets/14724/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-compartment-coach-3fe695bf","thumbnailUrl":"https://cdn.3dassets.dev/assets/14724/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14724/v1/poster.webp","blurhash":"U48D%~=yR4%3E24.brs;00NFbvE2~B~WaO%L","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":212140,"triangles":5976,"vertices":17928,"meshes":24,"materials":8,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.6294931332636537,9.536743172944284e-9,-7.5],"max":[1.6294931332636537,3.9196573232012404,7.5]},"sizeMeters":[3.259,3.92,15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.135Z","updatedAt":"2026-09-07T15:55:42.249Z","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/14724/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 CompartmentCarriageSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14724/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/14724/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14724/v1/model.glb\" alt=\"Compartment carriage (Steam Era Railway and Rolling Stock)\" 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/14724/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/14724/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14725","slug":"steam-era-railway-and-rolling-stock-corridor-coach-927e61fe","title":"Corridor carriage (Steam Era Railway and Rolling Stock)","summary":"A bogie corridor carriage with end gangways, four doors a side and a long run of windows.","description":"A 15.0 m bogie corridor carriage: end gangway connections with bellows frames, four doors per side, a continuous run of saloon windows, arched roof with ventilators and a trussed underframe on two four-wheel bogies. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 3.26 x 3.92 x 15.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: bogie-front-wheel-1-right, bogie-front-wheel-1-left, bogie-front-wheel-2-right, bogie-front-wheel-2-left, bogie-rear-wheel-1-right, bogie-rear-wheel-1-left, bogie-rear-wheel-2-right, bogie-rear-wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-corridor-coach-927e61fe","cdnUrl":"https://cdn.3dassets.dev/assets/14725/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-corridor-coach-927e61fe","thumbnailUrl":"https://cdn.3dassets.dev/assets/14725/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14725/v1/poster.webp","blurhash":"U48D-6$kIA%3EM4.oxs;00R%o}E2^j~WRR%L","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":195936,"triangles":5640,"vertices":16920,"meshes":24,"materials":8,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.6294931332636537,9.536743172944284e-9,-7.5],"max":[1.6294931332636537,3.9196573232012404,7.5]},"sizeMeters":[3.259,3.92,15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.231Z","updatedAt":"2026-09-07T15:55:42.337Z","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/14725/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 CorridorCarriageSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14725/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/14725/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14725/v1/model.glb\" alt=\"Corridor carriage (Steam Era Railway and Rolling Stock)\" 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/14725/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/14725/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14723","slug":"steam-era-railway-and-rolling-stock-brake-luggage-coac-9872f255","title":"Brake and luggage carriage (Steam Era Railway and Rolling Stock)","summary":"A brake carriage with the guard duckets bulging from each side and wide luggage doors.","description":"A 15.0 m brake and luggage carriage: a guard compartment with duckets projecting from each side for a clear view along the train, wide luggage double doors, three passenger doors, a stove chimney and a trussed underframe. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 3.26 x 4.06 x 15.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: bogie-front-wheel-1-right, bogie-front-wheel-1-left, bogie-front-wheel-2-right, bogie-front-wheel-2-left, bogie-rear-wheel-1-right, bogie-rear-wheel-1-left, bogie-rear-wheel-2-right, bogie-rear-wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-brake-luggage-coac-9872f255","cdnUrl":"https://cdn.3dassets.dev/assets/14723/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-brake-luggage-coac-9872f255","thumbnailUrl":"https://cdn.3dassets.dev/assets/14723/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14723/v1/poster.webp","blurhash":"U58gdB-VMx$+EL9Zt6t700NGkWIo^k~CRkt7","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":188364,"triangles":5480,"vertices":16440,"meshes":24,"materials":8,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.6294931332636537,9.536743172944284e-9,-7.5],"max":[1.6294931332636537,4.060224025971351,7.5]},"sizeMeters":[3.259,4.06,15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.117Z","updatedAt":"2026-09-07T15:55:42.235Z","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/14723/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 BrakeAndLuggageCarriageSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14723/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/14723/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14723/v1/model.glb\" alt=\"Brake and luggage carriage (Steam Era Railway and Rolling Stock)\" 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/14723/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/14723/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14726","slug":"steam-era-railway-and-rolling-stock-dining-coach-b9b8d6a4","title":"Dining carriage (Steam Era Railway and Rolling Stock)","summary":"A clerestory-roofed dining carriage with large saloon windows and end gangways.","description":"A 15.0 m dining carriage with a raised clerestory roof carrying its own glazed lights, eight large saloon windows a side, end gangways and vestibule doors at each end only. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 3.26 x 4.09 x 15.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: bogie-front-wheel-1-right, bogie-front-wheel-1-left, bogie-front-wheel-2-right, bogie-front-wheel-2-left, bogie-rear-wheel-1-right, bogie-rear-wheel-1-left, bogie-rear-wheel-2-right, bogie-rear-wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-dining-coach-b9b8d6a4","cdnUrl":"https://cdn.3dassets.dev/assets/14726/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-dining-coach-b9b8d6a4","thumbnailUrl":"https://cdn.3dassets.dev/assets/14726/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14726/v1/poster.webp","blurhash":"U484VtsWIAxGIp4:tQxu00W-ozE2^j~CM|xa","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":185720,"triangles":5428,"vertices":16284,"meshes":24,"materials":8,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.6294931332636537,9.536743172944284e-9,-7.5],"max":[1.6294931332636537,4.089576606675252,7.5]},"sizeMeters":[3.259,4.09,15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.483Z","updatedAt":"2026-09-07T15:55:42.587Z","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/14726/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 DiningCarriageSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14726/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/14726/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14726/v1/model.glb\" alt=\"Dining carriage (Steam Era Railway and Rolling Stock)\" 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/14726/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/14726/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14727","slug":"steam-era-railway-and-rolling-stock-four-wheel-branch--08917d65","title":"Four wheel branch line carriage (Steam Era Railway and Rolling Stock)","summary":"A short four-wheel branch carriage with three doors a side and a shallow arched roof.","description":"A 7.2 m four-wheel branch line carriage of an early design: three compartment doors per side, small quarterlights, a shallow arched roof, waist beading and a plain four-wheel underframe with leaf springs. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.70 x 3.58 x 7.20 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-four-wheel-branch--08917d65","cdnUrl":"https://cdn.3dassets.dev/assets/14727/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-four-wheel-branch--08917d65","thumbnailUrl":"https://cdn.3dassets.dev/assets/14727/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14727/v1/poster.webp","blurhash":"U49Gs{-WNFM_pd9askxt009FRPx]+a}[EMNd","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":131916,"triangles":2596,"vertices":7788,"meshes":12,"materials":8,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.349852623936458,-9.536743172944284e-9,-3.5999999046325684],"max":[1.349852623936458,3.580070937017637,3.5999999046325684]},"sizeMeters":[2.7,3.58,7.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.918Z","updatedAt":"2026-09-07T15:55:43.034Z","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/14727/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 FourWheelBranchLineCarriageSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14727/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/14727/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14727/v1/model.glb\" alt=\"Four wheel branch line carriage (Steam Era Railway and Rolling Stock)\" 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/14727/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/14727/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14728","slug":"steam-era-railway-and-rolling-stock-open-mineral-wagon-d00165d3","title":"Open mineral wagon (Steam Era Railway and Rolling Stock)","summary":"A planked four-wheel open mineral wagon with corner strapping and a side door.","description":"A 5.6 m four-wheel open mineral wagon: planked sides and ends built from individual boards, external ironwork strapping, a plank floor, a brake lever and journal axleboxes on leaf springs. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.38 x 2.40 x 5.60 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-open-mineral-wagon-d00165d3","cdnUrl":"https://cdn.3dassets.dev/assets/14728/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-open-mineral-wagon-d00165d3","thumbnailUrl":"https://cdn.3dassets.dev/assets/14728/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14728/v1/poster.webp","blurhash":"UCA]vh$*9Hod~UNHIpxs0LE2oyxs4;sos.WC","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":116064,"triangles":2872,"vertices":8616,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.1901411970646836,1.19209286886246e-9,-2.799999952316284],"max":[1.1950914820225693,2.400049683033454,2.799999952316284]},"sizeMeters":[2.385,2.4,5.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:42.998Z","updatedAt":"2026-09-07T15:55:43.082Z","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/14728/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 OpenMineralWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14728/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/14728/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14728/v1/model.glb\" alt=\"Open mineral wagon (Steam Era Railway and Rolling Stock)\" 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/14728/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/14728/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14729","slug":"steam-era-railway-and-rolling-stock-box-van-a71580fa","title":"Covered goods van (Steam Era Railway and Rolling Stock)","summary":"A planked covered goods van with a sliding door, arched roof and a vent light.","description":"A 5.9 m four-wheel covered goods van: planked body with external ironwork, a sliding side door with a runner rail, an arched roof, a small side vent light and a brake lever. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.43 x 3.64 x 5.90 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-box-van-a71580fa","cdnUrl":"https://cdn.3dassets.dev/assets/14729/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-box-van-a71580fa","thumbnailUrl":"https://cdn.3dassets.dev/assets/14729/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14729/v1/poster.webp","blurhash":"U49Z+R~UMwOZ%g9un#xa000LIps:$*^hIXJC","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":110420,"triangles":2756,"vertices":8268,"meshes":14,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.2151179817244062,1.19209286886246e-9,-2.950000047683716],"max":[1.2151179817244062,3.640125799197995,2.950000047683716]},"sizeMeters":[2.43,3.64,5.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:43.189Z","updatedAt":"2026-09-07T15:55:43.282Z","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/14729/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 CoveredGoodsVanSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14729/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/14729/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14729/v1/model.glb\" alt=\"Covered goods van (Steam Era Railway and Rolling Stock)\" 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/14729/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/14729/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14730","slug":"steam-era-railway-and-rolling-stock-flat-wagon-b25605be","title":"Flat goods wagon (Steam Era Railway and Rolling Stock)","summary":"A plain flat wagon with side stanchions and low end boards.","description":"A 5.6 m four-wheel flat wagon with a planked deck, eight side stanchions, low end boards and a brake lever. Suits sheeted loads, machinery and containers. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.37 x 1.96 x 5.60 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-flat-wagon-b25605be","cdnUrl":"https://cdn.3dassets.dev/assets/14730/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-flat-wagon-b25605be","thumbnailUrl":"https://cdn.3dassets.dev/assets/14730/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14730/v1/poster.webp","blurhash":"U8A0abaj0Lxt~VE3Io-o009t-.%002-T%LIp","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":109032,"triangles":2728,"vertices":8184,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.179873945213388,1.19209286886246e-9,-2.799999952316284],"max":[1.1949105574340553,1.9601406018446461,2.799999952316284]},"sizeMeters":[2.375,1.96,5.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:43.819Z","updatedAt":"2026-09-07T15:55:43.948Z","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/14730/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 FlatGoodsWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14730/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/14730/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14730/v1/model.glb\" alt=\"Flat goods wagon (Steam Era Railway and Rolling Stock)\" 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/14730/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/14730/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14731","slug":"steam-era-railway-and-rolling-stock-tank-wagon-a86f89fc","title":"Goods tank wagon (Steam Era Railway and Rolling Stock)","summary":"A riveted cylindrical tank wagon on a four-wheel frame, with a manhole and a walkway.","description":"A 5.8 m four-wheel tank wagon: a riveted cylindrical barrel with dished ends and strapping bands, a manhole with a filler cover, an end walkway with a handrail, saddle supports and a brake lever. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.37 x 3.12 x 5.80 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-tank-wagon-a86f89fc","cdnUrl":"https://cdn.3dassets.dev/assets/14731/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-tank-wagon-a86f89fc","thumbnailUrl":"https://cdn.3dassets.dev/assets/14731/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14731/v1/poster.webp","blurhash":"U79QdVxH00oJ_NIUE0xu00D%tl%M8_$*-qxu","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":140748,"triangles":3388,"vertices":10164,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.1799564098756656,1.19209286886246e-9,-2.9000000953674316],"max":[1.1948894048885303,3.1199074320695903,2.9000000953674316]},"sizeMeters":[2.375,3.12,5.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:43.873Z","updatedAt":"2026-09-07T15:55:43.994Z","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/14731/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 GoodsTankWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14731/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/14731/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14731/v1/model.glb\" alt=\"Goods tank wagon (Steam Era Railway and Rolling Stock)\" 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/14731/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/14731/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14732","slug":"steam-era-railway-and-rolling-stock-cattle-wagon-8763f0ec","title":"Cattle wagon (Steam Era Railway and Rolling Stock)","summary":"A slatted cattle wagon with open ventilation gaps and a drop door each side.","description":"A 5.9 m four-wheel cattle wagon: a planked lower body with slatted upper sides and ends for ventilation, corner posts, a drop door each side and an arched roof. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.38 x 3.50 x 5.90 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-cattle-wagon-8763f0ec","cdnUrl":"https://cdn.3dassets.dev/assets/14732/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-cattle-wagon-8763f0ec","thumbnailUrl":"https://cdn.3dassets.dev/assets/14732/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14732/v1/poster.webp","blurhash":"U4A0ae?F4ot8?b9bs:-n004:xqt7Vt}=E19$","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":122656,"triangles":2996,"vertices":8988,"meshes":13,"materials":5,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.190100052877185,1.19209286886246e-9,-2.950000047683716],"max":[1.1947798236363698,3.5001256942938204,2.950000047683716]},"sizeMeters":[2.385,3.5,5.9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:43.925Z","updatedAt":"2026-09-07T15:55:44.056Z","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/14732/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 CattleWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14732/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/14732/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14732/v1/model.glb\" alt=\"Cattle wagon (Steam Era Railway and Rolling Stock)\" 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/14732/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/14732/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14733","slug":"steam-era-railway-and-rolling-stock-brake-van-8d7a6f07","title":"Goods brake van (Steam Era Railway and Rolling Stock)","summary":"A goods brake van with an end veranda, guard duckets, a stove chimney and a hand brake wheel.","description":"A 6.4 m four-wheel goods brake van: a planked cabin with a veranda at each end behind iron railings, guard duckets projecting from both sides, a stove chimney on the roof and a hand brake column with a wheel. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.89 x 4.02 x 6.40 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-brake-van-8d7a6f07","cdnUrl":"https://cdn.3dassets.dev/assets/14733/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-brake-van-8d7a6f07","thumbnailUrl":"https://cdn.3dassets.dev/assets/14733/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14733/v1/poster.webp","blurhash":"U48|ki^$0058OaIoWA%100D*~A?G=s?HNHE3","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":135252,"triangles":3244,"vertices":9732,"meshes":14,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.4450000524520874,1.19209286886246e-9,-3.200000047683716],"max":[1.4450000524520874,4.020008827614989,3.200000047683716]},"sizeMeters":[2.89,4.02,6.4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:44.140Z","updatedAt":"2026-09-07T15:55:44.258Z","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/14733/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 GoodsBrakeVanSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14733/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/14733/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14733/v1/model.glb\" alt=\"Goods brake van (Steam Era Railway and Rolling Stock)\" 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/14733/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/14733/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14734","slug":"steam-era-railway-and-rolling-stock-bolster-timber-wag-88621920","title":"Bolster timber wagon (Steam Era Railway and Rolling Stock)","summary":"A bolster wagon carrying long timber between pivoting bolsters with iron stanchions.","description":"A 6.2 m four-wheel bolster wagon for long loads: two pivoting bolsters with iron stanchions and turntable plates, low end stops, a squared timber load and lashing straps. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.40 x 2.63 x 6.20 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-bolster-timber-wag-88621920","cdnUrl":"https://cdn.3dassets.dev/assets/14734/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-bolster-timber-wag-88621920","thumbnailUrl":"https://cdn.3dassets.dev/assets/14734/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14734/v1/poster.webp","blurhash":"UABC.0xZ0Log~UIpE2xa019u%Kxt0M$*%KW=","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":114356,"triangles":2836,"vertices":8508,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.1999020032364336,1.19209286886246e-9,-3.0999999046325684],"max":[1.1999020032364336,2.629979328381556,3.0999999046325684]},"sizeMeters":[2.4,2.63,6.2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:44.179Z","updatedAt":"2026-09-07T15:55:44.299Z","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/14734/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 BolsterTimberWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14734/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/14734/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14734/v1/model.glb\" alt=\"Bolster timber wagon (Steam Era Railway and Rolling Stock)\" 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/14734/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/14734/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14735","slug":"steam-era-railway-and-rolling-stock-hopper-wagon-25b3d852","title":"Bottom discharge hopper wagon (Steam Era Railway and Rolling Stock)","summary":"A steel hopper wagon with sloping ends and a bottom discharge chute.","description":"A 6.0 m four-wheel steel hopper wagon: a lofted hopper body with sloping ends falling to a bottom discharge chute, an outside top rail, side stiffeners and a discharge lever. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.44 x 2.74 x 6.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-hopper-wagon-25b3d852","cdnUrl":"https://cdn.3dassets.dev/assets/14735/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-hopper-wagon-25b3d852","thumbnailUrl":"https://cdn.3dassets.dev/assets/14735/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14735/v1/poster.webp","blurhash":"U98XFE%39Fba_4WqIUt7E1IUM{t7VrR5RP%3","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":114240,"triangles":2836,"vertices":8508,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.2199774163029877,1.19209286886246e-9,-3],"max":[1.2199774163029877,2.7412192003155305,3]},"sizeMeters":[2.44,2.741,6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:44.617Z","updatedAt":"2026-09-07T15:55:44.743Z","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/14735/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 BottomDischargeHopperWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14735/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/14735/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14735/v1/model.glb\" alt=\"Bottom discharge hopper wagon (Steam Era Railway and Rolling Stock)\" 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/14735/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/14735/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14736","slug":"steam-era-railway-and-rolling-stock-narrow-gauge-skip--112c82e9","title":"Narrow gauge tipping skip wagon (Steam Era Railway and Rolling Stock)","summary":"A 610 mm gauge V-skip on trunnions, with a named tipping pivot and a centre buffer.","description":"A 2.3 m narrow gauge tipping skip wagon for quarry and works traffic: a V-section steel skip carried on trunnions with a named tipping pivot, a four-wheel frame at 610 mm gauge and a centre buffer with a link coupling. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.32 over a matching track module. Coupler ports sit on the buffer faces at y=0.48. Bounding size 1.02 x 1.54 x 2.30 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left, skip-body. Rigid node-transform clips: wheel-roll and tilt. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-narrow-gauge-skip--112c82e9","cdnUrl":"https://cdn.3dassets.dev/assets/14736/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-narrow-gauge-skip--112c82e9","thumbnailUrl":"https://cdn.3dassets.dev/assets/14736/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14736/v1/poster.webp","blurhash":"U58D|i%300NF?^I:9ExG0KRiR*s.w|-VoLa_","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":77608,"triangles":1892,"vertices":5676,"meshes":12,"materials":3,"textures":0,"animations":["wheel-roll","tilt"],"boundingBox":{"min":[-0.5100195445503471,-1.0728836041806744e-8,-1.149999976158142],"max":[0.5100195445503471,1.5400288066487071,1.149999976158142]},"sizeMeters":[1.02,1.54,2.3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:44.637Z","updatedAt":"2026-09-07T15:55:44.769Z","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/14736/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 NarrowGaugeTippingSkipWagonSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14736/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/14736/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14736/v1/model.glb\" alt=\"Narrow gauge tipping skip wagon (Steam Era Railway and Rolling Stock)\" 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/14736/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/14736/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14737","slug":"steam-era-railway-and-rolling-stock-track-straight-4m-921a7240","title":"Plain track straight 4 m (Steam Era Railway and Rolling Stock)","summary":"A 4 m plain track module: ballast shoulder, timber sleepers, cast chairs and flat bottom rail.","description":"A 4 m module of plain double-headed permanent way with a trapezoidal ballast shoulder, six timber sleepers, cast chairs and swept flat bottom rail. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.10 x 0.50 x 4.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-track-straight-4m-921a7240","cdnUrl":"https://cdn.3dassets.dev/assets/14737/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-track-straight-4m-921a7240","thumbnailUrl":"https://cdn.3dassets.dev/assets/14737/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14737/v1/poster.webp","blurhash":"U5CP*BWW00s9D%W;tRaJ00of~VRk_3sARipJ","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":18892,"triangles":328,"vertices":984,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.049999952316284,-0.00011078022422907063,0],"max":[2.049999952316284,0.49995345629281684,4]},"sizeMeters":[4.1,0.5,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:44.828Z","updatedAt":"2026-09-07T15:55:44.913Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14737/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlainTrackStraight4MSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14737/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14737/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14737/v1/model.glb\" alt=\"Plain track straight 4 m (Steam Era Railway and Rolling Stock)\" 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/14737/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/14737/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14738","slug":"steam-era-railway-and-rolling-stock-track-curve-15deg-43b236be","title":"Plain track curve 15 degrees (Steam Era Railway and Rolling Stock)","summary":"A 15 degree curve on a 15 m radius, 3.88 m along the track centreline.","description":"A curved plain track module turning 15 degrees to the left on a 15 m centreline radius, 3.88 m long along the rails. Mirror the placement rotation to turn right. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.55 x 0.50 x 4.41 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-track-curve-15deg-43b236be","cdnUrl":"https://cdn.3dassets.dev/assets/14738/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-track-curve-15deg-43b236be","thumbnailUrl":"https://cdn.3dassets.dev/assets/14738/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14738/v1/poster.webp","blurhash":"U8BDQVIU00V@RPWCozt600%M~pof%NoeRPRk","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":37880,"triangles":720,"vertices":2160,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.4996767044067383,0.00003794698367481919,-0.033520029228137904],"max":[2.0497255325317383,0.4999232221534957,4.380373415838884]},"sizeMeters":[4.549,0.5,4.414],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:45.523Z","updatedAt":"2026-09-07T15:55:45.639Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14738/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlainTrackCurve15DegreesSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14738/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14738/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14738/v1/model.glb\" alt=\"Plain track curve 15 degrees (Steam Era Railway and Rolling Stock)\" 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/14738/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/14738/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14739","slug":"steam-era-railway-and-rolling-stock-turnout-left-fe11f19c","title":"Left hand turnout (Steam Era Railway and Rolling Stock)","summary":"An 8 m left hand turnout with switch blades, a curved lead, check rails, a crossing vee and a point lever.","description":"An 8 m left hand turnout: the through route runs straight from rail-a to rail-b, and the diverging route leaves on a 45 m radius to the rail-c port. Planed switch blades, long timber bearers, check rails, a crossing vee, point rodding and a ground lever are modelled. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.35 x 0.81 x 8.11 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-turnout-left-fe11f19c","cdnUrl":"https://cdn.3dassets.dev/assets/14739/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-turnout-left-fe11f19c","thumbnailUrl":"https://cdn.3dassets.dev/assets/14739/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14739/v1/poster.webp","blurhash":"U5Bpe1xa00i{9F9FtR-p00t7~pM{_N~qRPE1","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":55244,"triangles":1084,"vertices":3252,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.300160247257377,0.00007476349960303108,-0.019999999552965164],"max":[2.0500565758501086,0.8099951479640483,8.086106300354004]},"sizeMeters":[4.35,0.81,8.106],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:45.570Z","updatedAt":"2026-09-07T15:55:45.672Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14739/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LeftHandTurnoutSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14739/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14739/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14739/v1/model.glb\" alt=\"Left hand turnout (Steam Era Railway and Rolling Stock)\" 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/14739/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/14739/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14740","slug":"steam-era-railway-and-rolling-stock-crossing-diamond-6c9a5b4e","title":"Right angle crossing diamond (Steam Era Railway and Rolling Stock)","summary":"A flat crossing where two 4 m tracks cross at right angles, with four crossing noses.","description":"A right angle flat crossing on the 4 m grid. The north to south route runs from rail-a to rail-b; the east to west route runs from rail-c to rail-d across the middle of the module on long timber bearers. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.10 x 0.50 x 4.06 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-crossing-diamond-6c9a5b4e","cdnUrl":"https://cdn.3dassets.dev/assets/14740/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-crossing-diamond-6c9a5b4e","thumbnailUrl":"https://cdn.3dassets.dev/assets/14740/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14740/v1/poster.webp","blurhash":"U4B|7~%N00IoMwRkkWt600M_~Vn#.9xZaeNd","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":26956,"triangles":496,"vertices":1488,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.049999952316284,-0.00011078022422907063,0],"max":[2.049999952316284,0.49995345629281684,4.064000129699707]},"sizeMeters":[4.1,0.5,4.064],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:45.686Z","updatedAt":"2026-09-07T15:55:45.799Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14740/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RightAngleCrossingDiamondSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14740/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14740/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14740/v1/model.glb\" alt=\"Right angle crossing diamond (Steam Era Railway and Rolling Stock)\" 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/14740/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/14740/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14742","slug":"steam-era-railway-and-rolling-stock-buffer-stop-84daeb10","title":"Sleeper built buffer stop (Steam Era Railway and Rolling Stock)","summary":"A sleeper built buffer stop on a 3 m stub of track, with rubbing plates and a target board.","description":"A 3 m stub of track ending in a sleeper built buffer stop: stacked baulks, raking braces, buffing plates at coupler height, a red warning panel and a target board. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.10 x 2.64 x 3.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-buffer-stop-84daeb10","cdnUrl":"https://cdn.3dassets.dev/assets/14742/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-buffer-stop-84daeb10","thumbnailUrl":"https://cdn.3dassets.dev/assets/14742/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14742/v1/poster.webp","blurhash":"UED013xu0KI;00xu%MIU0ME2nh%1~VRR%g%M","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":33720,"triangles":616,"vertices":1848,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-2.049999952316284,-0.00011078022422907063,0],"max":[2.049999952316284,2.6399774404103535,3]},"sizeMeters":[4.1,2.64,3],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:46.081Z","updatedAt":"2026-09-07T15:55:46.189Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14742/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SleeperBuiltBufferStopSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14742/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14742/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14742/v1/model.glb\" alt=\"Sleeper built buffer stop (Steam Era Railway and Rolling Stock)\" 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/14742/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/14742/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14741","slug":"steam-era-railway-and-rolling-stock-level-crossing-70ed6fd5","title":"Level crossing with gates (Steam Era Railway and Rolling Stock)","summary":"A 4 m level crossing module with a timber road deck, stone approaches and two five bar gates.","description":"A 4 m level crossing: the road surface crosses the track on timber check boards flanked by stone approaches, with a five bar gate hung on each side of the line. Each gate is a named pivot node at its hanging post. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 9.40 x 2.12 x 4.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: gate-1, gate-2. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-level-crossing-70ed6fd5","cdnUrl":"https://cdn.3dassets.dev/assets/14741/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-level-crossing-70ed6fd5","thumbnailUrl":"https://cdn.3dassets.dev/assets/14741/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14741/v1/poster.webp","blurhash":"U6DStA?b00I;IT~Wxu0K009F?Zs:-=00IB~p","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":44576,"triangles":792,"vertices":2376,"meshes":7,"materials":6,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-4.699999904632568,0.00023651332600849173,0],"max":[4.699999904632568,2.1200777673628908,4]},"sizeMeters":[9.4,2.12,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:45.860Z","updatedAt":"2026-09-07T15:55:45.961Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\nimport { AnimationMixer } from 'three'\n\nlet mixer\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14741/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 LevelCrossingWithGatesSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14741/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/14741/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14741/v1/model.glb\" alt=\"Level crossing with gates (Steam Era Railway and Rolling Stock)\" 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/14741/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/14741/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14743","slug":"steam-era-railway-and-rolling-stock-bridge-deck-90cb5af6","title":"Through girder bridge deck (Steam Era Railway and Rolling Stock)","summary":"An 8 m riveted through girder bridge carrying the track at normal railhead height.","description":"An 8 m riveted plate girder bridge with the deck between the girders, so the railhead stays at y=0.50 and the module chains directly to plain track. Stone abutment blocks at each end, cross girders under the sleepers and stiffened web plates either side. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.60 x 2.94 x 8.25 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-bridge-deck-90cb5af6","cdnUrl":"https://cdn.3dassets.dev/assets/14743/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-bridge-deck-90cb5af6","thumbnailUrl":"https://cdn.3dassets.dev/assets/14743/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14743/v1/poster.webp","blurhash":"U38z=P~pD$Mx0100IU?b00s;IpIV^+~q?uWA","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":47992,"triangles":936,"vertices":2808,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.299832092817226,0.0001375378016373885,-0.125],"max":[2.299832092817226,2.9398219613211434,8.125]},"sizeMeters":[4.6,2.94,8.25],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:46.372Z","updatedAt":"2026-09-07T15:55:46.465Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14743/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ThroughGirderBridgeDeckSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14743/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14743/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14743/v1/model.glb\" alt=\"Through girder bridge deck (Steam Era Railway and Rolling Stock)\" 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/14743/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/14743/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14745","slug":"steam-era-railway-and-rolling-stock-narrow-track-strai-069c7a2a","title":"Narrow gauge track straight 4 m (Steam Era Railway and Rolling Stock)","summary":"A 4 m module of 610 mm gauge track with lighter rail and closely spaced sleepers.","description":"A 4 m module of 610 mm narrow gauge permanent way at seven tenths of standard gauge scale: ballast base at y=0, sleeper tops at y=0.245 and railhead top at y=0.35, with rail centres at x = +/- 0.330. The module origin sits on the rail-a port and runs toward +Z. Bounding size 2.87 x 0.35 x 4.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-narrow-track-strai-069c7a2a","cdnUrl":"https://cdn.3dassets.dev/assets/14745/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-narrow-track-strai-069c7a2a","thumbnailUrl":"https://cdn.3dassets.dev/assets/14745/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14745/v1/poster.webp","blurhash":"U5CGMja$00RjE1D*xa%L00t6~WWC?b_2M|M}","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":20644,"triangles":364,"vertices":1092,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-1.434980315561388,0.00009335570325455511,0],"max":[1.434980315561388,0.34999183570266873,4]},"sizeMeters":[2.87,0.35,4],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:46.621Z","updatedAt":"2026-09-07T15:55:46.725Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14745/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NarrowGaugeTrackStraight4MSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14745/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14745/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14745/v1/model.glb\" alt=\"Narrow gauge track straight 4 m (Steam Era Railway and Rolling Stock)\" 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/14745/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/14745/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14744","slug":"steam-era-railway-and-rolling-stock-signal-box-89e4fccd","title":"Signal box (Steam Era Railway and Rolling Stock)","summary":"A brick and timber signal box with a full window band, hipped slate roof and an external stair.","description":"A 7.8 m signal box: brick locking room below, timber operating floor above with a continuous window band on three sides, a hipped slate roof, a brick chimney, a nameboard and an external timber stair with an iron handrail. Bounding size 7.80 x 6.24 x 4.70 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-signal-box-89e4fccd","cdnUrl":"https://cdn.3dassets.dev/assets/14744/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-signal-box-89e4fccd","thumbnailUrl":"https://cdn.3dassets.dev/assets/14744/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14744/v1/poster.webp","blurhash":"U6DlsK~W00S57OtS-Ss900E1x^IV:hrrE29Z","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":30084,"triangles":532,"vertices":1596,"meshes":7,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-3.549999952316284,0,-2.3499099388329783],"max":[4.25,6.2399891314407725,2.3499099388329783]},"sizeMeters":[7.8,6.24,4.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:46.524Z","updatedAt":"2026-09-07T15:55:46.636Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14744/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignalBoxSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14744/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14744/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14744/v1/model.glb\" alt=\"Signal box (Steam Era Railway and Rolling Stock)\" 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/14744/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/14744/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14746","slug":"steam-era-railway-and-rolling-stock-semaphore-signal-9ca4609d","title":"Lower quadrant semaphore signal (Steam Era Railway and Rolling Stock)","summary":"A lattice post semaphore signal with the arm at danger, spectacle plate, lamp and ladder.","description":"A 6.9 m lower quadrant semaphore signal on a riveted lattice post: a signal arm at danger on a named pivot node, a two lens spectacle plate, a lamp case, a ladder to the arm and a balance lever at the foot. Rotate the signal-arm node about X to clear the signal. Bounding size 1.93 x 6.90 x 0.96 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: signal-arm. Rigid node-transform clips: trigger. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-semaphore-signal-9ca4609d","cdnUrl":"https://cdn.3dassets.dev/assets/14746/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-semaphore-signal-9ca4609d","thumbnailUrl":"https://cdn.3dassets.dev/assets/14746/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14746/v1/poster.webp","blurhash":"U25O4?%f004UD5M|%}-o~Vxt4:E2J9nj$iXR","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54848,"triangles":1044,"vertices":3132,"meshes":6,"materials":5,"textures":0,"animations":["trigger"],"boundingBox":{"min":[-0.4948739792467088,-0.000021356570057445845,-0.3499999940395355],"max":[1.4400000429153441,6.900000095367432,0.6059025536733642]},"sizeMeters":[1.935,6.9,0.956],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:48.307Z","updatedAt":"2026-09-07T15:55:48.545Z","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/14746/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 LowerQuadrantSemaphoreSignalSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14746/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/14746/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14746/v1/model.glb\" alt=\"Lower quadrant semaphore signal (Steam Era Railway and Rolling Stock)\" 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/14746/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/14746/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14747","slug":"steam-era-railway-and-rolling-stock-water-tower-87222c2b","title":"Water tower (Steam Era Railway and Rolling Stock)","summary":"A brick based water tower with a riveted steel tank, walkway rail, delivery pipe and ladder.","description":"A 6.9 m water tower: a brick base with an arched opening, a riveted steel tank with corner stiffeners and stiffening rails, a walkway handrail on top, a delivery pipe down one corner and an access ladder. Bounding size 5.73 x 6.90 x 5.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-water-tower-87222c2b","cdnUrl":"https://cdn.3dassets.dev/assets/14747/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-water-tower-87222c2b","thumbnailUrl":"https://cdn.3dassets.dev/assets/14747/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14747/v1/poster.webp","blurhash":"UAC~uL^k00MxPqS$Q,j?56J6I:Sh+Z$jxbn+","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":47052,"triangles":916,"vertices":2748,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.7266666351892557,0.00005187109900850473,-2.5],"max":[3.000037139568528,6.900000095367432,2.5]},"sizeMeters":[5.727,6.9,5],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:47.252Z","updatedAt":"2026-09-07T15:55:47.357Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14747/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WaterTowerSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14747/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14747/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14747/v1/model.glb\" alt=\"Water tower (Steam Era Railway and Rolling Stock)\" 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/14747/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/14747/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14748","slug":"steam-era-railway-and-rolling-stock-water-crane-5f5b75c0","title":"Water crane (Steam Era Railway and Rolling Stock)","summary":"A swinging water crane with a leather bag on a named pivot, and a fire devil brazier.","description":"A 3.1 m water crane: a cast column on a stone base, a swinging delivery arm with a leather bag on a named pivot node, a control lever and a fire devil brazier beside it to stop the column freezing. Bounding size 2.89 x 3.10 x 1.75 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: crane-arm. Rigid node-transform clips: open and close. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-water-crane-5f5b75c0","cdnUrl":"https://cdn.3dassets.dev/assets/14748/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-water-crane-5f5b75c0","thumbnailUrl":"https://cdn.3dassets.dev/assets/14748/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14748/v1/poster.webp","blurhash":"U37B4V?v0000RlIVV@-:02s+?HEN~q?b9F00","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":25984,"triangles":452,"vertices":1356,"meshes":5,"materials":4,"textures":0,"animations":["open","close"],"boundingBox":{"min":[-0.550000011920929,0,-0.550000011920929],"max":[2.340012748034731,3.0999999046325684,1.2000711217932363]},"sizeMeters":[2.89,3.1,1.75],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:48.496Z","updatedAt":"2026-09-07T15:55:48.748Z","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/14748/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 WaterCraneSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14748/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/14748/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14748/v1/model.glb\" alt=\"Water crane (Steam Era Railway and Rolling Stock)\" 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/14748/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/14748/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14749","slug":"steam-era-railway-and-rolling-stock-coaling-stage-dd222607","title":"Coaling stage (Steam Era Railway and Rolling Stock)","summary":"An elevated coaling stage on a stone retaining wall, with a roofed platform and a ramped approach.","description":"A 9.0 m coaling stage: a stone retaining wall carrying an elevated timber stage under a slated roof, a wagon road across the top with filled coal tubs standing ready, and a ramped stone approach behind. Bounding size 8.40 x 6.54 x 9.26 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-coaling-stage-dd222607","cdnUrl":"https://cdn.3dassets.dev/assets/14749/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-coaling-stage-dd222607","thumbnailUrl":"https://cdn.3dassets.dev/assets/14749/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14749/v1/poster.webp","blurhash":"UADJI$?b00jY00ag%La{00IUV?IU~pxutSRi","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":34216,"triangles":616,"vertices":1848,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-4.199999809265137,0.00022648933711133523,-5.90002124828768],"max":[4.199999809265137,6.539862114723854,3.35783656819221]},"sizeMeters":[8.4,6.54,9.258],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:47.636Z","updatedAt":"2026-09-07T15:55:47.734Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14749/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CoalingStageSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14749/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14749/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14749/v1/model.glb\" alt=\"Coaling stage (Steam Era Railway and Rolling Stock)\" 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/14749/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/14749/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14750","slug":"steam-era-railway-and-rolling-stock-turntable-19b94020","title":"Locomotive turntable (Steam Era Railway and Rolling Stock)","summary":"A 14.6 m turntable with a stone pit, circular rail and a riveted deck girder on a named pivot.","description":"A 14.6 m locomotive turntable: a stone pit wall and floor, a circular running rail and a riveted deck girder carrying the running rails across the pit. The whole deck is one named pivot node at the centre, so it can be rotated about Y. Bounding size 14.60 x 1.40 x 14.60 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: turntable-deck. Rigid node-transform clips: spin. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-turntable-19b94020","cdnUrl":"https://cdn.3dassets.dev/assets/14750/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-turntable-19b94020","thumbnailUrl":"https://cdn.3dassets.dev/assets/14750/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14750/v1/poster.webp","blurhash":"U6A,zk%M00V[j]j?ofWD00M{~qWBWAWCRjt6","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":58168,"triangles":1140,"vertices":3420,"meshes":4,"materials":3,"textures":0,"animations":["spin"],"boundingBox":{"min":[-7.300000190734863,0.00008575517673875543,-7.300000190734863],"max":[7.300000190734863,1.3998717879875302,7.300000190734863]},"sizeMeters":[14.6,1.4,14.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:47.691Z","updatedAt":"2026-09-07T15:55:47.789Z","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/14750/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 LocomotiveTurntableSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14750/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/14750/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14750/v1/model.glb\" alt=\"Locomotive turntable (Steam Era Railway and Rolling Stock)\" 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/14750/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/14750/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14751","slug":"steam-era-railway-and-rolling-stock-engine-shed-fronta-98c208ea","title":"Engine shed (Steam Era Railway and Rolling Stock)","summary":"A two road brick engine shed with arched openings, a slated roof and a ridge smoke vent.","description":"A 20 m two road brick engine shed: two arched engine openings in the gable frontage, brick side walls running back 11 m, a slated pitched roof with a full length ridge smoke vent and two chimneys at the rear. Bounding size 17.30 x 10.55 x 12.05 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-engine-shed-fronta-98c208ea","cdnUrl":"https://cdn.3dassets.dev/assets/14751/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-engine-shed-fronta-98c208ea","thumbnailUrl":"https://cdn.3dassets.dev/assets/14751/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14751/v1/poster.webp","blurhash":"U5C$l:~V00%1CRM|rWX90056p0Rj*d%1k?WA","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":26564,"triangles":488,"vertices":1464,"meshes":5,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-8.649999618530273,-0.0005187981005070341,-11.449958549673791],"max":[8.649999618530273,10.550280663384093,0.6004375037895358]},"sizeMeters":[17.3,10.551,12.05],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:48.000Z","updatedAt":"2026-09-07T15:55:48.110Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14751/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function EngineShedSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14751/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14751/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14751/v1/model.glb\" alt=\"Engine shed (Steam Era Railway and Rolling Stock)\" 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/14751/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/14751/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14752","slug":"steam-era-railway-and-rolling-stock-platform-module-e0cc0aef","title":"Station platform module (Steam Era Railway and Rolling Stock)","summary":"A 6 m station platform module with a stone face, timber edging and white coping marks.","description":"A 6 m station platform module: a stone retaining face, a paved surface, a timber safety edging strip and painted coping marks. Chain modules end to end on the platform-a and platform-b ports. The module origin sits on the platform face at ground level, and the body runs toward +X away from the track. Platform surface at y=1.25, which is 0.75 m above a matching railhead. Place the face 1.62 m from the track centreline. Bounding size 3.40 x 1.26 x 6.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-platform-module-e0cc0aef","cdnUrl":"https://cdn.3dassets.dev/assets/14752/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-platform-module-e0cc0aef","thumbnailUrl":"https://cdn.3dassets.dev/assets/14752/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14752/v1/poster.webp","blurhash":"U8Eo=7^+00WF?a4nIU-;009F-;of4o~q-pIU","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":19872,"triangles":348,"vertices":1044,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.001196341109458668,0.0002250740073854729,0],"max":[3.399952432676733,1.2599081387615736,6]},"sizeMeters":[3.401,1.26,6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:48.160Z","updatedAt":"2026-09-07T15:55:48.260Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14752/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationPlatformModuleSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14752/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14752/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14752/v1/model.glb\" alt=\"Station platform module (Steam Era Railway and Rolling Stock)\" 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/14752/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/14752/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14753","slug":"steam-era-railway-and-rolling-stock-platform-canopy-89c3608f","title":"Platform canopy (Steam Era Railway and Rolling Stock)","summary":"A 6 m platform canopy on cast columns, with a scalloped valance and a slated roof.","description":"A 6 m platform canopy: three cast iron columns with spandrel brackets, a timber and slate roof overhanging the platform edge, scalloped valance boards along both edges and light screens at each end. Sits on a platform module. Bounding size 3.60 x 4.52 x 6.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-platform-canopy-89c3608f","cdnUrl":"https://cdn.3dassets.dev/assets/14753/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-platform-canopy-89c3608f","thumbnailUrl":"https://cdn.3dassets.dev/assets/14753/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14753/v1/poster.webp","blurhash":"UGA0];s:IAWB~qRiM_ogE1M{bHt74oWAbIj]","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":41884,"triangles":808,"vertices":2424,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[0.14983520302906173,-0.00016542366638283568,0],"max":[3.750164802931403,4.520129684591787,6]},"sizeMeters":[3.6,4.52,6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:48.256Z","updatedAt":"2026-09-07T15:55:48.451Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14753/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlatformCanopySteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14753/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14753/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14753/v1/model.glb\" alt=\"Platform canopy (Steam Era Railway and Rolling Stock)\" 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/14753/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/14753/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14754","slug":"steam-era-railway-and-rolling-stock-footbridge-59be8b67","title":"Station footbridge (Steam Era Railway and Rolling Stock)","summary":"A lattice sided footbridge with a roofed deck and stairs at both ends, clearing the loading gauge.","description":"A 16 m station footbridge: a lattice sided deck 4.7 m above the railhead so it clears the loading gauge, a light roof over the span and a stepped stair tower at each end. Bounding size 2.20 x 7.82 x 15.98 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-footbridge-59be8b67","cdnUrl":"https://cdn.3dassets.dev/assets/14754/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-footbridge-59be8b67","thumbnailUrl":"https://cdn.3dassets.dev/assets/14754/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14754/v1/poster.webp","blurhash":"U48qB6ozDit5~q4.4noJ00adRPa~4m?F?b%g","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":60032,"triangles":1200,"vertices":3600,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.0998611740805928,-0.00003538655016699366,-7.989999771118164],"max":[1.0998611740805928,7.819987174505411,7.989999771118164]},"sizeMeters":[2.2,7.82,15.98],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:48.930Z","updatedAt":"2026-09-07T15:55:49.023Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14754/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationFootbridgeSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14754/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14754/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14754/v1/model.glb\" alt=\"Station footbridge (Steam Era Railway and Rolling Stock)\" 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/14754/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/14754/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14755","slug":"steam-era-railway-and-rolling-stock-goods-shed-debb22ca","title":"Goods shed (Steam Era Railway and Rolling Stock)","summary":"A brick goods shed with an arched rail opening, a loading platform and a road side canopy.","description":"A 13 m brick goods shed: an arched opening for a wagon road through the gable end, high level windows down both sides, a slated pitched roof, an external loading platform with timber doors and a canopy over the cart road. Bounding size 13.25 x 7.16 x 12.70 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-goods-shed-debb22ca","cdnUrl":"https://cdn.3dassets.dev/assets/14755/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-goods-shed-debb22ca","thumbnailUrl":"https://cdn.3dassets.dev/assets/14755/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14755/v1/poster.webp","blurhash":"U4Ci%N[V00~C1jS$${oz005+O@9v{Hvhohs.","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":30144,"triangles":544,"vertices":1632,"meshes":6,"materials":6,"textures":0,"animations":[],"boundingBox":{"min":[-5.150000095367432,-0.0002380205320549056,-6.35002845814424],"max":[8.100000381469727,7.159994998638743,6.35002845814424]},"sizeMeters":[13.25,7.16,12.7],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:49.240Z","updatedAt":"2026-09-07T15:55:49.352Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14755/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoodsShedSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14755/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14755/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14755/v1/model.glb\" alt=\"Goods shed (Steam Era Railway and Rolling Stock)\" 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/14755/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/14755/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14756","slug":"steam-era-railway-and-rolling-stock-station-nameboard-28b3e5b3","title":"Station nameboard (Steam Era Railway and Rolling Stock)","summary":"A blank enamelled station nameboard on two cast iron posts with knee braces.","description":"A 3.5 m station nameboard: a blank enamelled board in a timber frame carried on two cast iron posts with knee braces. The board carries no lettering so it can be labelled for any location. Bounding size 3.50 x 2.00 x 0.32 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-station-nameboard-28b3e5b3","cdnUrl":"https://cdn.3dassets.dev/assets/14756/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-station-nameboard-28b3e5b3","thumbnailUrl":"https://cdn.3dassets.dev/assets/14756/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14756/v1/poster.webp","blurhash":"ULB:gFt7E2t8~W-:M|RkE1-:xuM|4.t6-:WB","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":16816,"triangles":300,"vertices":900,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-1.75,0.00003353695257224398,-0.16175787154998159],"max":[1.75,1.9999664630474276,0.16175787154998159]},"sizeMeters":[3.5,2,0.324],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:49.336Z","updatedAt":"2026-09-07T15:55:49.444Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14756/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationNameboardSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14756/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14756/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14756/v1/model.glb\" alt=\"Station nameboard (Steam Era Railway and Rolling Stock)\" 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/14756/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/14756/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14757","slug":"steam-era-railway-and-rolling-stock-lamp-post-1e42f0ef","title":"Platform lamp post (Steam Era Railway and Rolling Stock)","summary":"A cast iron platform lamp post with a square glazed lantern and a blank sign plate.","description":"A 4.3 m cast iron platform lamp post: a fluted column, a square glazed lantern with a domed cap and finial, and a small blank sign plate on the column. Bounding size 0.68 x 4.28 x 0.68 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-lamp-post-1e42f0ef","cdnUrl":"https://cdn.3dassets.dev/assets/14757/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-lamp-post-1e42f0ef","thumbnailUrl":"https://cdn.3dassets.dev/assets/14757/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14757/v1/poster.webp","blurhash":"U15E,1%M004m?bWVDit6D%of-;Rk00Rj_3%L","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":22160,"triangles":420,"vertices":1260,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.33987122855071644,0,-0.33987122855071644],"max":[0.33987122855071644,4.28000020980835,0.33987122855071644]},"sizeMeters":[0.68,4.28,0.68],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:49.795Z","updatedAt":"2026-09-07T15:55:49.887Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14757/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlatformLampPostSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14757/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14757/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14757/v1/model.glb\" alt=\"Platform lamp post (Steam Era Railway and Rolling Stock)\" 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/14757/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/14757/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14758","slug":"steam-era-railway-and-rolling-stock-oil-can-9dc5d99e","title":"Long spout oil can (Steam Era Railway and Rolling Stock)","summary":"A brass long spout oil can with a thumb lever and a timber grip.","description":"A 0.37 m tall brass oil can with a long tapered spout, a thumb pump lever and a timber grip, of the pattern carried on the footplate. Bounding size 0.18 x 0.37 x 0.52 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-oil-can-9dc5d99e","cdnUrl":"https://cdn.3dassets.dev/assets/14758/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-oil-can-9dc5d99e","thumbnailUrl":"https://cdn.3dassets.dev/assets/14758/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14758/v1/poster.webp","blurhash":"U35;:MV@02%Lx[t5niNI01t7~nIW9GNKtQxD","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":11272,"triangles":184,"vertices":552,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.08998897296191809,7.030871226609836e-7,-0.20350749790668488],"max":[0.08998897296191809,0.3659529509637044,0.32074421644210815]},"sizeMeters":[0.18,0.366,0.524],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:49.995Z","updatedAt":"2026-09-07T15:55:50.093Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14758/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function LongSpoutOilCanSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14758/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14758/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14758/v1/model.glb\" alt=\"Long spout oil can (Steam Era Railway and Rolling Stock)\" 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/14758/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/14758/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14760","slug":"steam-era-railway-and-rolling-stock-coal-shovel-e216c2c2","title":"Firing shovel (Steam Era Railway and Rolling Stock)","summary":"A long handled firing shovel with a turned back blade.","description":"A 1.2 m firing shovel: a steel blade with a turned up back edge and a long timber handle with an end grip. Bounding size 0.30 x 0.20 x 1.23 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-coal-shovel-e216c2c2","cdnUrl":"https://cdn.3dassets.dev/assets/14760/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-coal-shovel-e216c2c2","thumbnailUrl":"https://cdn.3dassets.dev/assets/14760/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14760/v1/poster.webp","blurhash":"UB9QaH_NbwIUMw9FM{xt004-xY%M.9~q-pIV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":5408,"triangles":76,"vertices":228,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.15000611035093783,-0.0000021026853997685446,-1.225000023841858],"max":[0.15000611035093783,0.20182526985102467,0.004158233758062124]},"sizeMeters":[0.3,0.202,1.229],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:50.473Z","updatedAt":"2026-09-07T15:55:50.583Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14760/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function FiringShovelSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14760/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14760/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14760/v1/model.glb\" alt=\"Firing shovel (Steam Era Railway and Rolling Stock)\" 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/14760/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/14760/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14759","slug":"steam-era-railway-and-rolling-stock-sack-barrow-78fe2b6a","title":"Sack barrow (Steam Era Railway and Rolling Stock)","summary":"A two wheel sack barrow with a timber frame and spoked iron wheels.","description":"A 1.2 m two wheel sack barrow with a timber frame, cross rails, an iron toe plate and spoked iron wheels. Bounding size 0.56 x 1.20 x 0.73 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-sack-barrow-78fe2b6a","cdnUrl":"https://cdn.3dassets.dev/assets/14759/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-sack-barrow-78fe2b6a","thumbnailUrl":"https://cdn.3dassets.dev/assets/14759/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14759/v1/poster.webp","blurhash":"U59jZHIt00-j~N9G5B~pNcRj%0xuo}n+jFkV","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":23700,"triangles":456,"vertices":1368,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.28001219412374384,-0.00000969372583081718,-0.36413945169246775],"max":[0.28001219412374384,1.2000000476837158,0.3685401976108551]},"sizeMeters":[0.56,1.2,0.733],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:50.457Z","updatedAt":"2026-09-07T15:55:50.555Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14759/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SackBarrowSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14759/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14759/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14759/v1/model.glb\" alt=\"Sack barrow (Steam Era Railway and Rolling Stock)\" 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/14759/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/14759/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14761","slug":"steam-era-railway-and-rolling-stock-milk-churn-2dd0fcde","title":"Milk churn (Steam Era Railway and Rolling Stock)","summary":"A conical steel milk churn with strapping bands and side handles.","description":"A 0.78 m conical steel milk churn with three strapping bands, two side handles and a lidded neck, as loaded into brake vans from station platforms. Bounding size 0.54 x 0.78 x 0.54 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-milk-churn-2dd0fcde","cdnUrl":"https://cdn.3dassets.dev/assets/14761/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-milk-churn-2dd0fcde","thumbnailUrl":"https://cdn.3dassets.dev/assets/14761/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14761/v1/poster.webp","blurhash":"U59Qs;x]00IA_4of4nRj00WV-:n%4nay-;oe","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":40132,"triangles":800,"vertices":2400,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2680148899360341,0,-0.2680148899360341],"max":[0.2680148899360341,0.7799999713897705,0.2680148899360341]},"sizeMeters":[0.536,0.78,0.536],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:50.579Z","updatedAt":"2026-09-07T15:55:50.688Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14761/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MilkChurnSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14761/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14761/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14761/v1/model.glb\" alt=\"Milk churn (Steam Era Railway and Rolling Stock)\" 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/14761/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/14761/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14762","slug":"steam-era-railway-and-rolling-stock-mail-sack-e9f271a8","title":"Mail sack (Steam Era Railway and Rolling Stock)","summary":"A tied canvas mail sack with a neck cord and a label.","description":"A 0.86 m canvas mail sack, filled and tied at the neck with a cord ring and a blank label. Bounding size 0.73 x 0.78 x 0.62 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-mail-sack-e9f271a8","cdnUrl":"https://cdn.3dassets.dev/assets/14762/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-mail-sack-e9f271a8","thumbnailUrl":"https://cdn.3dassets.dev/assets/14762/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14762/v1/poster.webp","blurhash":"U7Cs1__2009F4:Rks:WV00Dk~B%M={%L%KWB","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":13200,"triangles":224,"vertices":672,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.36329140792153636,0,-0.3100170789939474],"max":[0.36329140792153636,0.7799999713897705,0.3100170789939474]},"sizeMeters":[0.727,0.78,0.62],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:50.568Z","updatedAt":"2026-09-07T15:55:50.690Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14762/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function MailSackSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14762/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14762/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14762/v1/model.glb\" alt=\"Mail sack (Steam Era Railway and Rolling Stock)\" 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/14762/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/14762/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14764","slug":"steam-era-railway-and-rolling-stock-hand-lamp-f8991f76","title":"Signalling hand lamp (Steam Era Railway and Rolling Stock)","summary":"A brass and iron hand lamp with a carrying loop and a red aspect.","description":"A 0.59 m hand lamp with a glazed body, a red aspect lens on one side, a vented top, a carrying loop and a base tray. Bounding size 0.19 x 0.59 x 0.20 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-hand-lamp-f8991f76","cdnUrl":"https://cdn.3dassets.dev/assets/14764/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-hand-lamp-f8991f76","thumbnailUrl":"https://cdn.3dassets.dev/assets/14764/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14764/v1/poster.webp","blurhash":"U15=65=}000KInS2nlsB00Na~q$kQnni.8O?","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":17260,"triangles":308,"vertices":924,"meshes":3,"materials":3,"textures":0,"animations":[],"boundingBox":{"min":[-0.09699246317814889,0,-0.09699246317814889],"max":[0.09699246317814889,0.5920000076293945,0.09799688752914226]},"sizeMeters":[0.194,0.592,0.195],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:51.077Z","updatedAt":"2026-09-07T15:55:51.169Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14764/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SignallingHandLampSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14764/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14764/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14764/v1/model.glb\" alt=\"Signalling hand lamp (Steam Era Railway and Rolling Stock)\" 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/14764/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/14764/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14763","slug":"steam-era-railway-and-rolling-stock-parcels-trolley-fb4fc4f8","title":"Parcels trolley (Steam Era Railway and Rolling Stock)","summary":"A four wheel platform parcels trolley with end rails and loaded crates.","description":"A 1.84 m four wheel platform parcels trolley: a planked deck on iron channels, spoked iron wheels, end rails and two timber crates aboard. Bounding size 1.21 x 1.04 x 1.84 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-parcels-trolley-fb4fc4f8","cdnUrl":"https://cdn.3dassets.dev/assets/14763/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-parcels-trolley-fb4fc4f8","thumbnailUrl":"https://cdn.3dassets.dev/assets/14763/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14763/v1/poster.webp","blurhash":"U7AmSP=_0MI@~VV?IWt800D*-P%20Lof-nkD","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":51504,"triangles":1036,"vertices":3108,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.6049476717303284,-0.000024398109112255817,-0.9200000166893005],"max":[0.6049476717303284,1.0399697604503755,0.9200000166893005]},"sizeMeters":[1.21,1.04,1.84],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:52.037Z","updatedAt":"2026-09-07T15:55:52.128Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14763/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ParcelsTrolleySteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14763/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14763/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14763/v1/model.glb\" alt=\"Parcels trolley (Steam Era Railway and Rolling Stock)\" 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/14763/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/14763/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14765","slug":"steam-era-railway-and-rolling-stock-wheel-chock-f50bd511","title":"Wagon wheel chock (Steam Era Railway and Rolling Stock)","summary":"A timber wagon chock with an iron shoe and a lifting handle.","description":"A 0.44 m timber wagon wheel chock with an iron shoe plate along the base and an iron lifting handle with a ring. Bounding size 0.44 x 0.73 x 0.36 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-wheel-chock-f50bd511","cdnUrl":"https://cdn.3dassets.dev/assets/14765/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-wheel-chock-f50bd511","thumbnailUrl":"https://cdn.3dassets.dev/assets/14765/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14765/v1/poster.webp","blurhash":"UAAmF.-o019a0MWX^iad4;NH-oxZ~UofE2j[","category":{"slug":"props","title":"Props & Furniture"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":8112,"triangles":132,"vertices":396,"meshes":2,"materials":2,"textures":0,"animations":[],"boundingBox":{"min":[-0.2199999988079071,-0.000005791743513949843,-0.18000348672706437],"max":[0.2199999988079071,0.734000027179718,0.18000348672706437]},"sizeMeters":[0.44,0.734,0.36],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:51.490Z","updatedAt":"2026-09-07T15:55:51.573Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14765/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function WagonWheelChockSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14765/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14765/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14765/v1/model.glb\" alt=\"Wagon wheel chock (Steam Era Railway and Rolling Stock)\" 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/14765/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/14765/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14766","slug":"steam-era-railway-and-rolling-stock-turnout-right-e67a582f","title":"Right hand turnout (Steam Era Railway and Rolling Stock)","summary":"An 8 m right hand turnout, the handed pair to the left hand unit.","description":"An 8 m right hand turnout: the through route runs straight from rail-a to rail-b, and the diverging route leaves on a 45 m radius to the right to the rail-c port. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.35 x 0.81 x 8.11 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-turnout-right-e67a582f","cdnUrl":"https://cdn.3dassets.dev/assets/14766/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-turnout-right-e67a582f","thumbnailUrl":"https://cdn.3dassets.dev/assets/14766/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14766/v1/poster.webp","blurhash":"U7BWYztS00nhMxD%of%M00f4^+R+-;~WWUE2","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":55252,"triangles":1084,"vertices":3252,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.0500565758501086,0.00007476349960303108,-0.019999999552965164],"max":[2.300160247257377,0.8099951479640483,8.086106300354004]},"sizeMeters":[4.35,0.81,8.106],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:51.638Z","updatedAt":"2026-09-07T15:55:51.742Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14766/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function RightHandTurnoutSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14766/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14766/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14766/v1/model.glb\" alt=\"Right hand turnout (Steam Era Railway and Rolling Stock)\" 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/14766/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/14766/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14770","slug":"steam-era-railway-and-rolling-stock-track-straight-2m-0ee437ce","title":"Plain track straight 2 m (Steam Era Railway and Rolling Stock)","summary":"A 2 m plain track filler module for half grid spacing.","description":"A 2 m plain track module for closing half grid gaps and reaching buffer stops. Ballast base at y=0, sleeper tops at y=0.35 and railhead top at y=0.50; 1,435 mm gauge with rail centres at x = +/- 0.7525. The module origin sits on the rail-a port at the track centreline and the module runs toward +Z. Bounding size 4.10 x 0.50 x 2.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-track-straight-2m-0ee437ce","cdnUrl":"https://cdn.3dassets.dev/assets/14770/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-track-straight-2m-0ee437ce","thumbnailUrl":"https://cdn.3dassets.dev/assets/14770/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14770/v1/poster.webp","blurhash":"U6CP*Bjd00tR9F_2tR9G00In^*s.~q00M_?b","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":13700,"triangles":220,"vertices":660,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.049999952316284,-0.00011078022422907063,-0.00006864338437462258],"max":[2.049999952316284,0.49995345629281684,2.000068643384375]},"sizeMeters":[4.1,0.5,2],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:52.346Z","updatedAt":"2026-09-07T15:55:52.463Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14770/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function PlainTrackStraight2MSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14770/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14770/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14770/v1/model.glb\" alt=\"Plain track straight 2 m (Steam Era Railway and Rolling Stock)\" 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/14770/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/14770/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14767","slug":"steam-era-railway-and-rolling-stock-narrow-track-curve-17448cb3","title":"Narrow gauge track curve (Steam Era Railway and Rolling Stock)","summary":"A sharp 25 degree narrow gauge curve on an 8 m radius, as industrial lines use.","description":"A 610 mm narrow gauge curve turning 25 degrees to the left on an 8 m centreline radius, 3.49 m long along the rails. Railhead top at y=0.35. Bounding size 3.50 x 0.35 x 3.99 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-narrow-track-curve-17448cb3","cdnUrl":"https://cdn.3dassets.dev/assets/14767/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-narrow-track-curve-17448cb3","thumbnailUrl":"https://cdn.3dassets.dev/assets/14767/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14767/v1/poster.webp","blurhash":"U7A,tR9G00obj=Rjt7xt00-;~pogbJxtIUM|","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":35200,"triangles":664,"vertices":1992,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-2.068327839125306,0.000017041031744283175,-0.04471682012081146],"max":[1.43427496646753,0.3499673658520166,3.9465816020965576]},"sizeMeters":[3.503,0.35,3.991],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:52.219Z","updatedAt":"2026-09-07T15:55:52.365Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14767/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function NarrowGaugeTrackCurveSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14767/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14767/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14767/v1/model.glb\" alt=\"Narrow gauge track curve (Steam Era Railway and Rolling Stock)\" 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/14767/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/14767/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14768","slug":"steam-era-railway-and-rolling-stock-semaphore-signal-c-d3a16948","title":"Semaphore signal cleared (Steam Era Railway and Rolling Stock)","summary":"The same lattice post signal with the arm lowered to the clear position.","description":"The lattice post semaphore signal with its arm dropped 42 degrees to the lower quadrant clear position. The arm remains a named pivot node so it can be worked between the two states. Bounding size 1.93 x 6.90 x 0.96 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: signal-arm. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-semaphore-signal-c-d3a16948","cdnUrl":"https://cdn.3dassets.dev/assets/14768/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-semaphore-signal-c-d3a16948","thumbnailUrl":"https://cdn.3dassets.dev/assets/14768/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14768/v1/poster.webp","blurhash":"U25OEE%f008xDPM|yW-o~Vxa4pE2EMni$*TJ","category":{"slug":"roads-infrastructure","title":"Roads & Infrastructure"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"modular","title":"Modular"},{"slug":"kit","title":"Kit / Set"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":54316,"triangles":1044,"vertices":3132,"meshes":6,"materials":5,"textures":0,"animations":[],"boundingBox":{"min":[-0.4948739792467088,-0.000021356570057445845,-0.3499999940395355],"max":[1.4400000429153441,6.900000095367432,0.6059025536733642]},"sizeMeters":[1.935,6.9,0.956],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:52.245Z","updatedAt":"2026-09-07T15:55:52.473Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14768/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function SemaphoreSignalClearedSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14768/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14768/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14768/v1/model.glb\" alt=\"Semaphore signal cleared (Steam Era Railway and Rolling Stock)\" 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/14768/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/14768/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14769","slug":"steam-era-railway-and-rolling-stock-open-mineral-wagon-2d8a73cc","title":"Open mineral wagon loaded with coal (Steam Era Railway and Rolling Stock)","summary":"The open mineral wagon carrying a heaped coal load above the side rails.","description":"The 5.6 m open mineral wagon loaded with a heaped coal cargo standing proud of the side rails. Body, underframe and running gear are unchanged. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.38 x 2.59 x 5.60 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-open-mineral-wagon-2d8a73cc","cdnUrl":"https://cdn.3dassets.dev/assets/14769/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-open-mineral-wagon-2d8a73cc","thumbnailUrl":"https://cdn.3dassets.dev/assets/14769/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14769/v1/poster.webp","blurhash":"U59jJy={8{bb~VIpRPxZ0057Nat79axZE3T0","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":118412,"triangles":2904,"vertices":8712,"meshes":13,"materials":5,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.1901411970646836,1.19209286886246e-9,-2.799999952316284],"max":[1.1950914820225693,2.5898949428317306,2.799999952316284]},"sizeMeters":[2.385,2.59,5.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:52.335Z","updatedAt":"2026-09-07T15:55:52.441Z","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/14769/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 OpenMineralWagonLoadedWithCoalSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14769/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/14769/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14769/v1/model.glb\" alt=\"Open mineral wagon loaded with coal (Steam Era Railway and Rolling Stock)\" 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/14769/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/14769/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14771","slug":"steam-era-railway-and-rolling-stock-flat-wagon-loaded-c7c646db","title":"Flat wagon with a crated load (Steam Era Railway and Rolling Stock)","summary":"The flat wagon carrying three strapped timber crates between its stanchions.","description":"The 5.6 m flat wagon carrying three strapped timber crates held down by iron banding and stanchion ropes. Deck, underframe and running gear are unchanged. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.37 x 2.30 x 5.60 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-1-right, wheel-1-left, wheel-2-right, wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-flat-wagon-loaded-c7c646db","cdnUrl":"https://cdn.3dassets.dev/assets/14771/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-flat-wagon-loaded-c7c646db","thumbnailUrl":"https://cdn.3dassets.dev/assets/14771/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14771/v1/poster.webp","blurhash":"U9A,LAs;02Rn~TIqE3xa00E2%1xY0M$$-nba","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":113144,"triangles":2812,"vertices":8436,"meshes":12,"materials":4,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.179873945213388,1.19209286886246e-9,-2.799999952316284],"max":[1.1949105574340553,2.2999980467057486,2.799999952316284]},"sizeMeters":[2.375,2.3,5.6],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:53.213Z","updatedAt":"2026-09-07T15:55:53.314Z","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/14771/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 FlatWagonWithACratedLoadSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14771/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/14771/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14771/v1/model.glb\" alt=\"Flat wagon with a crated load (Steam Era Railway and Rolling Stock)\" 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/14771/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/14771/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14772","slug":"steam-era-railway-and-rolling-stock-goods-0-6-0-smokeb-68e4d951","title":"Goods 0-6-0 with the smokebox door open (Steam Era Railway and Rolling Stock)","summary":"The 0-6-0 goods locomotive posed on shed with the smokebox door swung fully open on its hinge.","description":"The 9.0 m 0-6-0 goods locomotive with its smokebox door, ring, straps and dart swung 90 degrees open on the hinge for char cleaning, exposing the smokebox interior. Every other assembly is unchanged. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.70 x 3.97 x 9.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, wheel-driver-3-right, wheel-driver-3-left, coupling-rod-right, motion-right, coupling-rod-left, motion-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-goods-0-6-0-smokeb-68e4d951","cdnUrl":"https://cdn.3dassets.dev/assets/14772/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-goods-0-6-0-smokeb-68e4d951","thumbnailUrl":"https://cdn.3dassets.dev/assets/14772/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14772/v1/poster.webp","blurhash":"U15}?Tzq00TdP-4TnT?v00Io.lxYy^%z%x^Q","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":270948,"triangles":7396,"vertices":22188,"meshes":26,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.3500961486328495,-2.6666836405730976e-8,-4.5],"max":[1.3500961486328495,3.9738284259544328,4.5]},"sizeMeters":[2.7,3.974,9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:54.316Z","updatedAt":"2026-09-07T15:55:54.414Z","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/14772/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 Goods060WithTheSmokeboxDoorOpenSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14772/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/14772/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14772/v1/model.glb\" alt=\"Goods 0-6-0 with the smokebox door open (Steam Era Railway and Rolling Stock)\" 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/14772/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/14772/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14773","slug":"steam-era-railway-and-rolling-stock-platform-module-ra-293fc360","title":"Station platform end ramp module (Steam Era Railway and Rolling Stock)","summary":"The platform module with a sloping end ramp closing the +Z end of a platform run.","description":"The 6 m platform module with a 2.8 m sloping ramp added at its +Z end to close a platform run, plus a ramped timber edging strip. Only the platform-a port remains usable. The module origin sits on the platform face at ground level, and the body runs toward +X away from the track. Platform surface at y=1.25, which is 0.75 m above a matching railhead. Place the face 1.62 m from the track centreline. Bounding size 3.40 x 1.26 x 8.80 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Static geometry; no rig, collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-platform-module-ra-293fc360","cdnUrl":"https://cdn.3dassets.dev/assets/14773/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-platform-module-ra-293fc360","thumbnailUrl":"https://cdn.3dassets.dev/assets/14773/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14773/v1/poster.webp","blurhash":"UCDvcn%M00Rj%L9FIV%M00IU?bxuIU~q-:My","category":{"slug":"buildings","title":"Buildings & Architecture"},"tags":[{"slug":"historical","title":"Historical"},{"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":20740,"triangles":364,"vertices":1092,"meshes":4,"materials":4,"textures":0,"animations":[],"boundingBox":{"min":[-0.0013668370948218822,-0.00013864241015415502,0],"max":[3.400074543575763,1.2599081387615736,8.800000190734863]},"sizeMeters":[3.401,1.26,8.8],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:53.350Z","updatedAt":"2026-09-07T15:55:53.452Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14773/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function StationPlatformEndRampModuleSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14773/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14773/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14773/v1/model.glb\" alt=\"Station platform end ramp module (Steam Era Railway and Rolling Stock)\" 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/14773/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/14773/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14774","slug":"steam-era-railway-and-rolling-stock-compartment-coach--1ef0c50a","title":"Compartment carriage in varnished teak (Steam Era Railway and Rolling Stock)","summary":"The compartment carriage finished in varnished teak instead of crimson and cream panels.","description":"The 15.0 m bogie compartment carriage in a varnished teak finish, the older company style, with the same body, doors, roof and running gear. Colour only differs from the crimson and cream version. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 3.26 x 3.92 x 15.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: bogie-front-wheel-1-right, bogie-front-wheel-1-left, bogie-front-wheel-2-right, bogie-front-wheel-2-left, bogie-rear-wheel-1-right, bogie-rear-wheel-1-left, bogie-rear-wheel-2-right, bogie-rear-wheel-2-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-compartment-coach--1ef0c50a","cdnUrl":"https://cdn.3dassets.dev/assets/14774/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-compartment-coach--1ef0c50a","thumbnailUrl":"https://cdn.3dassets.dev/assets/14774/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14774/v1/poster.webp","blurhash":"U58D@I-:RN%MD+9Gaxog00RjkXIV_1~UW=%2","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":211996,"triangles":5976,"vertices":17928,"meshes":24,"materials":6,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.6294931332636537,9.536743172944284e-9,-7.5],"max":[1.6294931332636537,3.9196573232012404,7.5]},"sizeMeters":[3.259,3.92,15],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:54.222Z","updatedAt":"2026-09-07T15:55:54.331Z","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/14774/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 CompartmentCarriageInVarnishedTeakSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14774/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/14774/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14774/v1/model.glb\" alt=\"Compartment carriage in varnished teak (Steam Era Railway and Rolling Stock)\" 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/14774/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/14774/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14775","slug":"steam-era-railway-and-rolling-stock-goods-0-6-0-lined--29ed5427","title":"Goods 0-6-0 in unlined black (Steam Era Railway and Rolling Stock)","summary":"The 0-6-0 goods locomotive in the plain black goods finish rather than lined green.","description":"The 9.0 m 0-6-0 goods locomotive in a plain black goods finish, the usual wartime and post-war economy livery. Geometry, motion and pivots are identical to the green version. Wheel flanges rest on y=0, so the rail plane sits at y=0.03; place the vehicle at y=0.47 over a matching track module. Coupler ports sit on the buffer faces at y=1.09. Bounding size 2.70 x 3.97 x 9.00 m (X x Y x Z). Metre units, +Y up, +Z forward, resting at y=0. Named pivot nodes: wheel-driver-1-right, wheel-driver-1-left, wheel-driver-2-right, wheel-driver-2-left, wheel-driver-3-right, wheel-driver-3-left, coupling-rod-right, motion-right, coupling-rod-left, motion-left. Rigid node-transform clips: wheel-roll. No skinning. No collision or navigation data.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-goods-0-6-0-lined--29ed5427","cdnUrl":"https://cdn.3dassets.dev/assets/14775/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-goods-0-6-0-lined--29ed5427","thumbnailUrl":"https://cdn.3dassets.dev/assets/14775/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14775/v1/poster.webp","blurhash":"U15;{#-U00T1Io4-tl.900D%%gw]?J#qwH^*","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"historical","title":"Historical"},{"slug":"realistic","title":"Realistic"},{"slug":"exterior","title":"Exterior"}],"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":270784,"triangles":7396,"vertices":22188,"meshes":26,"materials":5,"textures":0,"animations":["wheel-roll"],"boundingBox":{"min":[-1.3500143467359491,-2.6666836405730976e-8,-4.5],"max":[1.3500143467359491,3.9739503692139215,4.5]},"sizeMeters":[2.7,3.974,9],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:55.376Z","updatedAt":"2026-09-07T15:55:55.463Z","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/14775/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 Goods060InUnlinedBlackSteamEraRailwayAndRollingStock(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/14775/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/14775/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14775/v1/model.glb\" alt=\"Goods 0-6-0 in unlined black (Steam Era Railway and Rolling Stock)\" 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/14775/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/14775/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}},{"id":"14778","slug":"steam-era-railway-and-rolling-stock-stat-d2357295-starter-scene","title":"Country station with a passenger train at the platform (Steam Era Railway and Rolling Stock)","summary":"Composed example for Steam Era Railway and Rolling Stock.","description":"A through station: a 4-6-0 and tender at the head of two carriages standing at the up platform, opposite platform, canopies, signal box, footbridge, semaphore signals, nameboard, water crane, lamps and platform traffic. Track modules chain on the 4 m grid and every vehicle stands at y=0.47 on the railhead.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-stat-d2357295-starter-scene","cdnUrl":"https://cdn.3dassets.dev/assets/14778/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-stat-d2357295-starter-scene","thumbnailUrl":"https://cdn.3dassets.dev/assets/14778/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14778/v1/poster.webp","blurhash":"U47-Td${4-EMD+9Gof%L00xu^,nh?G~pM{E1","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"historical","title":"Historical"},{"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":1099904,"triangles":30888,"vertices":67373,"meshes":138,"materials":8,"textures":0,"animations":[],"boundingBox":{"min":[-7.989999771118164,-0.00016542366638283568,-8],"max":[9.84990993883298,7.819987174505411,52]},"sizeMeters":[17.84,7.82,60],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":1,"publishedAt":"2026-09-07T15:55:55.558Z","updatedAt":"2026-09-07T18:31:43.141Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14778/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function CountryStationWithAPassengerTrainAtThePlatformSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14778/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14778/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14778/v1/model.glb\" alt=\"Country station with a passenger train at the platform (Steam Era Railway and Rolling Stock)\" 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/14778/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/14778/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14777","slug":"steam-era-railway-and-rolling-stock-goods-yard-and-she-526f4a60","title":"Goods yard with turntable, engine shed and wagon sidings (Steam Era Railway and Rolling Stock)","summary":"Composed example for Steam Era Railway and Rolling Stock.","description":"A locomotive and goods yard: turntable and two road engine shed at one end, a coaling stage, water tower and goods shed, a shunter with a rake of wagons on the running line, a siding of mineral and hopper traffic behind a buffer stop, and a short 610 mm gauge line with its saddle tank and skip.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-goods-yard-and-she-526f4a60","cdnUrl":"https://cdn.3dassets.dev/assets/14777/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-goods-yard-and-she-526f4a60","thumbnailUrl":"https://cdn.3dassets.dev/assets/14777/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14777/v1/poster.webp","blurhash":"U58NqXxZ00o#IoD%s;-;00R-~pV@-o_3R%4n","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"historical","title":"Historical"},{"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":1716132,"triangles":47032,"vertices":102232,"meshes":201,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-19.199999809265137,-0.0005187981005070341,-33.44995854967379],"max":[21.35002845814424,10.550280663384093,40]},"sizeMeters":[40.55,10.551,73.45],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:55.541Z","updatedAt":"2026-09-07T15:55:55.644Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14777/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function GoodsYardWithTurntableEngineShedAndWagonSidingsSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14777/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14777/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14777/v1/model.glb\" alt=\"Goods yard with turntable, engine shed and wagon sidings (Steam Era Railway and Rolling Stock)\" 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/14777/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/14777/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}},{"id":"14776","slug":"steam-era-railway-and-rolling-stock-connector-cases-293476ca","title":"Connector cases for rail, narrow gauge rail, couplers and platforms (Steam Era Railway and Rolling Stock)","summary":"Composed example for Steam Era Railway and Rolling Stock.","description":"Assembly cases proving every declared port type: plain track chained straight to straight and into a curve, a turnout fed from a straight and leading into a diamond, a locomotive coupled to its tender and a van, two narrow gauge modules chained with a saddle tank coupled to a skip, and two platform modules abutted end to end.","status":"published","url":"https://3dassets.dev/assets/steam-era-railway-and-rolling-stock-connector-cases-293476ca","cdnUrl":"https://cdn.3dassets.dev/assets/14776/v1/model.glb","downloadUrl":"https://3dassets.dev/download/steam-era-railway-and-rolling-stock-connector-cases-293476ca","thumbnailUrl":"https://cdn.3dassets.dev/assets/14776/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/14776/v1/poster.webp","blurhash":"U37^_L%L00~q9G?a-;9F009G~qIA_30001~q","category":{"slug":"environments","title":"Environments & Scenes"},"tags":[{"slug":"historical","title":"Historical"},{"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":860924,"triangles":25448,"vertices":55573,"meshes":127,"materials":7,"textures":0,"animations":[],"boundingBox":{"min":[-2.4996767044067383,-0.00013864241015415502,-16],"max":[55.40007454357576,4.443950369213922,18.064000129699707]},"sizeMeters":[57.9,4.444,34.064],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Fable 5.1","downloads":0,"publishedAt":"2026-09-07T15:55:55.499Z","updatedAt":"2026-09-07T15:55:55.596Z","usage":{"threejs":"import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'\n\nconst loader = new GLTFLoader()\nloader.load('https://cdn.3dassets.dev/assets/14776/v1/model.glb', (gltf) => {\n  scene.add(gltf.scene)\n})","r3f":"import { useGLTF } from '@react-three/drei'\n\nexport function ConnectorCasesForRailNarrowGaugeRailCouplersAndPlatformsSteamEraRailwayAndRollingStock(props) {\n  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/14776/v1/model.glb')\n  return <primitive object={scene} {...props} />\n}\nuseGLTF.preload('https://cdn.3dassets.dev/assets/14776/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/14776/v1/model.glb\" alt=\"Connector cases for rail, narrow gauge rail, couplers and platforms (Steam Era Railway and Rolling Stock)\" 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/14776/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/14776/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);"}}],"demo":{"slug":"steam-era-railway-and-rolling-stock","title":"Country station","url":"https://3dassets.dev/demos/steam-era-railway-and-rolling-stock"}}}