# Rack shuttle robot on rail (Vertical Farm and Hydroponics Tower)

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.

- **URL:** https://3dassets.dev/assets/vertical-farm-and-hydroponics-tower-vertical-farm-and--fbf0240c
- **GLB (direct, CORS *, immutable):** https://cdn.3dassets.dev/assets/38380/v1/model.glb
- **Download (counted):** https://3dassets.dev/download/vertical-farm-and-hydroponics-tower-vertical-farm-and--fbf0240c
- **Licence:** CC0 1.0 Universal: https://creativecommons.org/publicdomain/zero/1.0/ (no attribution required)
- **Contributor:** 3D Assets (@3dassets): https://3dassets.dev/u/3dassets
- **Category:** Vehicles
- **Tags:** Modern, Realistic, Animated, Kit / Set, Interior
- **Geometry:** 764 triangles, 1,627 vertices, 11 meshes, 7 materials, 0 textures
- **Size (m):** 2 × 0.519 × 1.18
- **Animations:** traverse-open, traverse-close, lid-open, lid-close
- **File size:** 0.04 MB
- **Downloads:** 0
- **AI used (contributor-reported):** yes; model: Claude Opus 5

## About

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.

## Use with three.js

```js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'
import { AnimationMixer } from 'three'

let mixer

const loader = new GLTFLoader()
loader.load('https://cdn.3dassets.dev/assets/38380/v1/model.glb', (gltf) => {
  scene.add(gltf.scene)
  mixer = new AnimationMixer(gltf.scene)
  mixer.clipAction(gltf.animations[0]).play()
})

// Call from your render loop; deltaSeconds is time since the previous frame.
function updateAssetAnimation(deltaSeconds) {
  mixer?.update(deltaSeconds)
}
```

## React Three Fiber

```jsx
import { useGLTF, useAnimations } from '@react-three/drei'
import { useEffect } from 'react'

export function RackShuttleRobotOnRailVerticalFarmAndHydroponicsTower(props) {
  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/38380/v1/model.glb')
  const { actions, names } = useAnimations(animations, scene)
  useEffect(() => {
    const action = actions[names[0]]
    action?.reset().play()
    return () => { action?.stop() }
  }, [actions, names])
  return <primitive object={scene} {...props} />
}
useGLTF.preload('https://cdn.3dassets.dev/assets/38380/v1/model.glb')
```

## <model-viewer>

```html
<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

```python
# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.
import bpy
bpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/38380/v1/model.glb
# Metres and +Y up are converted to Blender's Z-up scene automatically.
# Clips arrive as actions; play them from the Dope Sheet > Action Editor.
```

## Godot

```gdscript
# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.
var packed := load("res://models/model.glb") as PackedScene
var model := packed.instantiate()
add_child(model)
var player := model.find_child("AnimationPlayer", true, false) as AnimationPlayer
player.play(player.get_animation_list()[0])
```

## Unity

```csharp
// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,
// or load it at runtime straight from the CDN:
using GLTFast;
var gltf = new GltfImport();
if (await gltf.Load("https://cdn.3dassets.dev/assets/38380/v1/model.glb")) await gltf.InstantiateMainSceneAsync(transform);
// Clips import as legacy AnimationClips on the root; GetComponent<Animation>().Play() starts the first.
```

---
JSON: https://3dassets.dev/api/v1/assets/vertical-farm-and-hydroponics-tower-vertical-farm-and--fbf0240c · Loads with a plain GLTFLoader: no Draco/KTX2 loaders needed.