Setting the ProjectionMatrix


I need to override the projection matrix for a standard (not stereo) view and was wondering on the cleanest way of doing it.

I have managed to do it by creating a custom GameViewportClient class and overriding the Draw method but it all seems a bit hacky and I wondered if there’s a nice clean direct way through the APIs?

Searching I came across this post which seems to suggest you can set the FSceneViewProjectionData with a custom ProjectionMatrix so i thought I would try that.

I can get the FSceneViewProjectionData and read the ProjectionMatrix via the LocalPlayer->GetProjectionData but I can’t see how to set it anywhere. I’m fairly new to the engine and C++ in general so might be doing this the wrong way around, but does anyone know if I’m on the right track (or could point me on the best way to update the ProjkectionMatrix) please?

Thanks for any help

Does anyone know how to set the FSceneViewProjectionData with a custom Projection Matrix?

It would be nice to have better exposed support for this. Bungie talks about how they have changed the projection matrix to be a bit off center, with the reticle lower, in all their games since Halo 2: The Art of Destiny's First-Person Animation - YouTube

Thanks for the link but I couldn’t find anything related to how they did it. I didn’t have time to watch the whole thing so scanned thru most but couldn’t find him talking about updating the Projection Matrix anywhere? Did I miss it?

I linked to the timestamp where he discusses it. He doesn’t explicitly say it was done by changing the projection matrix, but that’s how it was done (the only other way I can think of would be a crop which would be too inefficient).