# Linkspan bridge section (Ferry Terminal and Harbour Crossing)

Hinged linkspan bridge 6 m long and 7 m wide carrying two vehicle lanes out to a ship: a chequered steel deck with yellow kerbs and handrails on a welded box girder, pinned to a pair of charcoal shore bearings it tilts on as the tide moves the ship.

- **URL:** https://3dassets.dev/assets/ferry-terminal-and-harbour-crossing-ferry-terminal-and-edb91ab1
- **GLB (direct, CORS *, immutable):** https://cdn.3dassets.dev/assets/35631/v1/model.glb
- **Download (counted):** https://3dassets.dev/download/ferry-terminal-and-harbour-crossing-ferry-terminal-and-edb91ab1
- **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:** Roads & Infrastructure
- **Tags:** Modern, Realistic, Animated, Exterior, Kit / Set
- **Geometry:** 656 triangles, 1,502 vertices, 34 meshes, 4 materials, 0 textures
- **Size (m):** 7.2 × 2.38 × 6.49
- **Animations:** tilt
- **File size:** 0.02 MB
- **Downloads:** 0
- **AI used (contributor-reported):** yes; model: Claude Opus 5

## About

Hinged linkspan bridge 6 m long and 7 m wide carrying two vehicle lanes out to a ship: a chequered steel deck with yellow kerbs and handrails on a welded box girder, pinned to a pair of charcoal shore bearings it tilts on as the tide moves the ship. Overall 7.20 by 2.38 by 6.49 m (X by Y by Z). Metre units, +Y up, the working face toward +Z, with a free origin on its fixing surface. The origin is the centre of the shore hinge line at deck bearing level, with the girder below it and the bridge cantilevering toward +Z, so the section is placed in the air at whatever height the ship's vehicle deck sits at. The shore bearings, the hinge pin and the girder are static, and the lifting cables and rams belong to the tower rather than the bridge: only the deck node tilts, because one rigid node cannot both tilt a deck and telescope a ram. Rigid node-transform clips: tilt. No skinning. No collision or navigation data. Original CC0 geometry: no operator, shipping line, port authority or maker marks anywhere, and every livery and sign face is invented.

## 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/35631/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 LinkspanBridgeSectionFerryTerminalAndHarbourCrossing(props) {
  const { scene, animations } = useGLTF('https://cdn.3dassets.dev/assets/35631/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/35631/v1/model.glb')
```

## <model-viewer>

```html
<model-viewer src="https://cdn.3dassets.dev/assets/35631/v1/model.glb" alt="Linkspan bridge section (Ferry Terminal and Harbour Crossing)" 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/35631/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/35631/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/ferry-terminal-and-harbour-crossing-ferry-terminal-and-edb91ab1 · Loads with a plain GLTFLoader: no Draco/KTX2 loaders needed.