nDisplay + motion platform (motion platform compensation?)

Hi there,

I have a fixed cylindrical projection wall setup in a room, with a movable motion platform in the center.

The projector display has been sucessfully setup with warping and blending using scalable, however I now need to compensate for the motion platform translation/rotation on the display.

I have tried simply negating the platform position + rotation offsets on my game camera, and while this works fine for the rotations it does not work with translations due to the perspective offset.

I suspect what I really need to do is modify the projection matrix / have off axis projection.

Is this supported out of the box? I seem to be getting pretty deep into the Unreal engine internals if wanting to manually update/modify the projection matrix? Perhaps I’m missing something more straight forward!

TLDR - How to add motion platform compensation when using a motion platform with nDisplay?

Thanks,
Chris

Hi Chris,

I’m not sure whether you have already solved this problem, but I’m currently working on a very similar issue and I’d like to share some of my findings.

In my case, I’m using a cylindrical LED screen rather than a projector setup. At the beginning, I also tried to compensate the motion by directly transforming the camera, eye point, or nDisplay actor. However, I found that these approaches could not correctly satisfy both translation and rotation compensation at the same time.

After studying the paper “Generalized Perspective Projection”, I started to look at the problem from a different perspective. In the real world, what actually changes is the position and orientation of the observer’s eye point caused by the motion platform. However, instead of directly transforming the camera or eye point in the rendering system, we can treat it as a change of the screen coordinate system and apply the inverse transformation to the display system.

By transforming the screen system inversely according to the eye point motion, the projection can correctly account for both translation and rotation of the motion platform.

I’m still testing this approach in my setup, but the results so far are more promising than directly modifying the camera transform.

I’d be very interested to know how you approached this problem, and whether you found any other solutions.

Best regards,