Larry - Vienna ULF Tram – Rigged Blender Asset

Overview

A highly detailed 3D model of the iconic Vienna ULF (Ultra Low Floor) tram, modelled after line 25 to Floridsdorf, car number 727. The model is built for Blender 5.1+ and ships with a fully functional path-following rig, ready for cinematic shots, archviz projects, or any scene that needs a realistic Vienna-style tram.

Highlights

  • Fully rigged — follows any Bezier curve automatically

  • Rigid-body articulation at the real-world joint positions (no Spline IK)

  • Realistic proportions based on reference material

  • Clean modifier-based, non-destructive setup

  • Optimised with instanced segments for efficient memory use

  • Tileable and procedural materials — no texture streaming overhead

  • Wiener Linien branding, correct destination displays, accurate interior

  • HDRI included for instant rendering

Technical Specifications

  • Vertices: 226,162

  • Faces: 215,584

  • Triangles: 433,399

  • Objects: 1,882 (segments built as instances)

  • Format: .blend (native, Blender 5.1+)

  • Renderer: Optimised for Cycles (not tuned for EEVEE)

  • UV-mapped: Yes

Materials & Textures

This asset is designed for efficient scene memory and clean scalability:

  • Procedural and tileable materials throughout — no large texture atlases needed

  • One PBR texture set is used for the driver's seat fabric

  • All other materials (body paint, metal, glass, interior plastics, signage) are procedural or built on tileable patterns

  • Easy to recolour or adapt without re-baking

Rigging System

The tram uses a clean Empty-chain rig with drivers and a small Python script that dynamically adapts to any curve length. No Spline IK is used — instead, rigid sections articulate only at the real joint positions, exactly like the actual ULF. This produces realistic articulation without mesh distortion.

Included in the rig:

  • Bezier curve track (ULF_Track) as a starting reference

  • ULF_Pivot empties (Front, Rear, 01–04) driving the segments

  • Python script "curve_length" for automatic length adaptation

  • Animate a single Offset Factor — the entire tram follows

Scene Structure

Clean outliner organisation: ULF_Tram collection with Mesh, Helpers, ULF_Pivots, and ULF_Track. Easy to append into any existing Blender project.

What's Included

  • Complete ULF tram model (exterior + interior)

  • Procedural and tileable materials

  • One PBR texture set (driver's seat)

  • HDRI for lighting and reflections

  • Fully rigged path-following animation system

  • Python script for dynamic curve adaptation

  • Bezier curve track (ULF_Track)

  • Clean, labelled outliner structure

What's NOT Included

All preview images and videos show the tram inside a custom scene for context. The following are not part of this product:

  • City environment, buildings, street furniture, stops

  • Passengers and driver character

  • Other vehicles or traffic

How to Use

  1. Append the ULF_Tram collection into your scene

  2. Create or select a Bezier curve for your track

  3. Set the Follow Path target on all ULF_Pivot empties to your curve

  4. Run the included "curve_length" script in the Scripting tab

  5. Animate the Offset Factor of ULF_Pivot.Front — the whole tram follows

  6. Enable "Auto Run Python Scripts" in Preferences → Save & Load

Requirements

  • Blender 5.1 or later (driver issues in 5.0.1 prevent correct playback)

  • Cycles renderer (the asset is not optimised for EEVEE)

  • No external add-ons required

Support & Background

For a detailed breakdown of the rigging process and development background, visit: https://larry.at/vienna-ulf-tram-english/

For questions or support, feel free to contact me directly.

Video Preview:

https://vimeo.com/1182376394