- Home /
Zoom camera to correct FoV based on Rect size
I have a Rect which is drawn on screen and would like my camera to zoom in so that this Rect box fills the screen. I am trying to apply an equation (found here) which calculates the appropriate FoV required to do this. The equation is:
float camera.fieldOfView = 2 * Mathf.Atan(frustumHeight * 0.5f / distance) * Mathf.Rad2Deg;
The issue is that I'm not too sure what to enter for the frustumHeight. This doesn't seem to be the height of the Rect, at it's much smaller than that required (based on manually changing the FoV to see what looks approximately right).
I was wondering if there is a conversion I need to do somewhere to get the correct height?
Note, the Rect is used to surround a number of objects on screen. It was calculated by finding all of their collider.bounds min and max X and Y values and then uses these values to draw the smallest sized Rect around them (i.e. touching the colliders). As the coordinates used to calculate the Rect were in World Space, is it not right to assume then that the height of the Rect should also be in World Space scale?
Thanks
Answer by smoggach · Dec 08, 2014 at 07:55 PM
frustumHeight should definitely be the size of your rect.
Right you are! The camera had a parent object whose scale wasn't equal to 1. That was the reason for the discrepancy in the FoV calculation. Compensating for this in the equation by multiplying the Rect height by 1 / parentObj's scale, fixes this.
Thanks
Your answer
Follow this Question
Related Questions
Zooming camera using move z position. 0 Answers
Change field of view over time 1 Answer
How to accurately zoom (not dolly) and pan Camera to mouse click position 1 Answer
2D is zoomed in/out on different ios devices 0 Answers
how to know the relationship between zoom ratio and field of view 1 Answer