{"data":{"id":"38380","slug":"vertical-farm-and-hydroponics-tower-vertical-farm-and--fbf0240c","title":"Rack shuttle robot on rail (Vertical Farm and Hydroponics Tower)","summary":"An automated tray shuttle on its own 2 m rail section: a low carriage with guide rollers, a telescopic transfer deck carrying a grow tray and a blank status panel. The carriage runs the rail and the transfer flap at the rail end lifts.","description":"An automated tray shuttle on its own 2 m rail section: a low carriage with guide rollers, a telescopic transfer deck carrying a grow tray and a blank status panel. The carriage runs the rail and the transfer flap at the rail end lifts. Overall 2.00 by 0.52 by 1.18 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, resting on y=0. The origin is the centre of the rail section, so the shuttle laces straight into a rail run. The carriage rests at the left hand end of its travel. The guide rollers, the drive belt and the status panel are modelled solid and the panel is blank. The carriage and its tray are one node: it runs the rail, and its wheels do not turn separately. Rigid node-transform clips: traverse-open, traverse-close, lid-open and lid-close. No skinning. No collision or navigation data. Original CC0 geometry: no grower, seed house, equipment maker, lighting brand or retailer is named or depicted anywhere, and every screen, fascia, crate and label face is blank.","status":"published","url":"https://3dassets.dev/assets/vertical-farm-and-hydroponics-tower-vertical-farm-and--fbf0240c","cdnUrl":"https://cdn.3dassets.dev/assets/38380/v1/model.glb","downloadUrl":"https://3dassets.dev/download/vertical-farm-and-hydroponics-tower-vertical-farm-and--fbf0240c","thumbnailUrl":"https://cdn.3dassets.dev/assets/38380/v1/thumb.webp","posterUrl":"https://cdn.3dassets.dev/assets/38380/v1/poster.webp","blurhash":"U5B3=^-:00aQ9d%gs*IA00D*?wbu^cDhtS%h","category":{"slug":"vehicles","title":"Vehicles"},"tags":[{"slug":"modern","title":"Modern"},{"slug":"realistic","title":"Realistic"},{"slug":"animated","title":"Animated"},{"slug":"kit","title":"Kit / Set"},{"slug":"interior","title":"Interior"}],"license":{"slug":"cc0-1.0","name":"CC0 1.0 Universal","url":"https://creativecommons.org/publicdomain/zero/1.0/","attributionRequired":false},"contributor":{"username":"3dassets","name":"3D Assets","url":"https://3dassets.dev/u/3dassets"},"stats":{"fileSize":38576,"triangles":764,"vertices":1627,"meshes":11,"materials":7,"textures":0,"animations":["traverse-open","traverse-close","lid-open","lid-close"],"boundingBox":{"min":[-1,-0.000025177397788667816,-0.5900662308497145],"max":[1.0000033752899649,0.5185278332348938,0.5900662308497145]},"sizeMeters":[2,0.519,1.18],"hasDraco":false,"hasMeshopt":false,"hasKTX2":false,"extensionsUsed":["KHR_mesh_quantization"]},"aiGenerated":true,"aiModel":"Claude Opus 5","downloads":0,"publishedAt":"2026-09-12T14:36:19.289Z","updatedAt":"2026-09-12T14:36:19.397Z","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/38380/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 RackShuttleRobotOnRailVerticalFarmAndHydroponicsTower(props) {\n  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/38380/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/38380/v1/model.glb')","modelViewer":"<model-viewer src=\"https://cdn.3dassets.dev/assets/38380/v1/model.glb\" alt=\"Rack shuttle robot on rail (Vertical Farm and Hydroponics Tower)\" 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/38380/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/38380/v1/model.glb\")) await gltf.InstantiateMainSceneAsync(transform);\n// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first."}}}