What we've been up to, May 2025

2025 is already well underway, so let’s go over what’s new in our world. Slight format change for this one: structure is optional and I’ll just dump content in no particular order, with one illustration and text. Good luck with that!

OpenDRIVE plugin

New feature for our OpenDRIVE plugin: a dedicated gizmo!

  • Slide objects along the road
  • Move them to the next lane
  • Center/align with lane

… all of that on the same gizmo.

This feature was made possible by Unreal’s new Scriptable Tools API, so it has only been tested on 5.5.

Android Steering

Ever wanted to steer your virtual car using your smartphone? No? Well, you still can. I installed SensorServer on my phone, I made a client plugin for Unreal, and now I can do just that!

This was just a quick prototype, now I can use my phone to test various controls schemes for our vehicles (who said anything about a scooter?).

Projector dashboard

An anonymous colleague of mine made this really neat UI to remote control all the projectors in our nDisplay cluster. This means we don’t need to jump through menus to get the remaining lamp lifetime, and experimenters can get live feedback on each projector status.

It also includes a CLI, so projectors can automatically start up and shutdown alongside the overall cluster.

Emergency vehicles

We needed some emergency vehicles for a new research project. So I bought nearly every vehicle (and more) from jerome-evelette on cgtrader, cleaned, rigged and added Siren Control System on them and voila!

RESISMAS, aka “fence spline”

Road-Edge-Snapping Instanced Static Mesh Along a Spline - that’s a mouthful.

I want to draw a spline to make a fence, but I don’t want it to deform like a traditional spline mesh, and I also want it to use Instanced Static Mesh because that’ll be much more efficient. Oh, and can it also align with the road edge while we’re at it?

Mesh from the video comes from the amazing Meik.W.

LabStreamingLayer Eye-Tracking Component

I created a small Component that hooks into Unreal’s IEyeTrackerModule and streams that data over LabStreamingLayer.

Cool bonus feature: you can specify a line trace pattern around the gaze data pulled from the eye-tracking device, to both simulate the fovea and alleviate sensor inaccuracy. And obvioulsy, it returns the name of the hit objects, which is what we want in the first place.

Continuous Traffic Spawner

Sometimes you just want traffic to spawn endlessly somewhere. Mostly, when you’re debugging some other feature and don’t want to spend time setting up traffic. With this new actor, you just set spawn locations, frequency, and that’s it.

Improved Sound

Sounds before and after, early in development

Sound was always an afterthought for us, but not anymore! This is still work in progress, but improvements can definitely be heard.

  • New engine and roll sounds (Metasound)
  • Added aero sound
  • Added doppler effect
  • Added inside/outside car effect (Audio Gameplay Volumes)
  • Reworked attenuation for all car sounds
Written on May 1, 2025