How to make an Off-axis / Off-center camera ?

Hello all,

I work on an app which is using a projector, which is used to be represent as a camera in Unity.
However as I use a perspective camera (and I want a perspective camera), I’d like to have the same position in Unity and IRL.
To a better understanding, you can see on the scheme in black what a unity camera sees, and in red, what my projector sees and what I want to achieve in Unity.
My problem is that I want my camera Off-axis/off-center but I don’t know how to do it.

projection field

I think there’s some things to adjust with the “Camera.projectionMatrix” ( Unity - Scripting API: Camera.projectionMatrix ), but I don’t understand how the script works, and I don’t understand what happens when I change the floats (right, left, bottom, top).

If someone could help me, I’ll appreciate.

Thank you :slight_smile:

Hi,

You have to change the camera’s projection matrix and you already found the script, you’ve made the most difficult part! :slight_smile: In the script you have to set the parameters for the near plane. For instance, Top means the distance from the center to the top of the camera, I hope this picture helps. Same explanation for right and left parameters.

49778-411915cameraprojectionfield.png

Take into account that there is a bug with shadows that makes Off-axis projection useless in the newest versions of Unity. I hope it’s fixed soon, in the meantime, you can just upvote the issue so they prioritize.

I actually have a little example implementation in my github.
Enjoy!