Horisontal AOV?
-
It worked!
The true test to if I understood this will be when I try to make functions that calculate between all directions of Vaov, Haov and Daov. At least I can go to bed now. -
Oh good. have you got it all worked out then in Ruby Thom?
Chris
-
def self.haov_from_vaov(vaov, ratio) return (2 * Math.atan( Math.tan(vaov.degrees / 2) * ratio )).radians end
When (if) I get the other conversions worked out I'll post them back here in case anyone else should need them. (Plus, people with better math skills than me can verify if I did it right...
)
-
@thomthom said:
Camera.fov
returns the vertical AOV. But how do I get the horizontal or diagonal AOV?
From Wiki I find this forumla: http://en.wikipedia.org/wiki/Angle_of_view(
Math.atan
== arctan, right?)
Problem is, that assumes a film width and height... Which I don't have for the SU camera. So, how do you go about calculating the various AOV?After a year or so...
I needed it - so here it is...### acc is the active camera ### width is the screen width ### height is the screen height fol=acc.focal_length fovV=acc.fov ### fovV if the vertical fov in degrees wid=width.to_f hei=height.to_f if acc.image_width != 0 wid=acc.image_width if acc.aspect_ratio != 0 aro=acc.aspect_ratio else aro=wid/hei end#if hei=wid/aro end#if h=2*fol*Math;;tan(fovV.degrees/2) w=h*wid/hei fovH=(2*Math;;atan(w/(2*fol))).radians ### fovH is the horizontal fov in degrees
-
Ah! I'd forgotten about this! (yet another project in limbo.
)
Thanks TIG - I'll play around with this when I get VE over with.
-
Very odd, I also had to re-visit this to make similar code recently....are we all working on the same project?
Chris
-
I can't even remember exactly what it was any more.
I think it was in regard to making camera objects. But due to observers begin naughty it down-prioritised.
-
I did a quick little diagram, but its been a while since I have had to use any trig to write a formula.
-
My seemingly convoluted code does return the correct horizontal
fovH
in degrees from the currentfov
[i.e. vertical] in degrees...
It uses thefocal_length
of the current camera to get this...
The results matches what appears [on a PC] with the code snippetSketchup.send_action(10624)
for the fovH value... so I am confident in its efficacy. -
On this subject.. FOV a registry question.
I noticed a setting in the registry Tools/FovDisplayMode
my setting is 0What is this ?
-
You can switch between horizontal and vertical in the dialog window that pops up with:
Sketchup.send_action(10624)
I wonder if that registry setting controls that? That would be nice to be able to switch the user back and forth from horizontal and vertical as needed maybe?
Otherwise, if its not that, I am out of ideas (for now).
Chris
-
Though FOV being horizontal or vertical seems to be associated with the model, not as an SU global setting. So it is probably not that then?
Chris
-
The global default?
-
I suppose it could be, but if it is, the template file is overwriting it.
-
@chris fullmer said:
You can switch between horizontal and vertical in the dialog window that pops up with:
Sketchup.send_action(10624)
I wonder if that registry setting controls that? That would be nice to be able to switch the user back and forth from horizontal and vertical as needed maybe?I changed the setting to 1, and see no difference, in the model or in any of the settings in that Camera dialog.
Could be an orphan setting left over from some earlier version.Why is there no menu choice or constant string to bring up that dialog?? Is this a WIN only feature?
-
Yes, it seems to be Win only.
-
Think it's a debug dialoge.
But I do wonder why one can set vertical or horisontal AOV from the UI. And why camera.aspect_ratio isn't exposed in the UI.
-
camera.fov
always returns the 'vertical' fov. Many 3rd party apps you export to need the 'horizontal' fov - so fov = 30 degrees fovV >> ~52 degrees fovH...
My method does return fovH in degrees correctly: it's worked out from the only available bits via the API - i.e.camera.fov
[vertical, in degrees] &camera.focal_length
& the screen's width [view.vpwith
] or thecamera.image_width
, if that's set [it's >0 if you are using a specific 'camera type']... which can then be combined to get it...
You can get thecamera.aspect_ratio
as it's the ratio of the two fov's ?? -
@tig said:
You can get the
camera.aspect_ratio
as it's the ratio of the two fov's ???
You do get camera.aspect_ratio via the ruby API. But I was wondering why it is not part of the Sketchup UI to control.
-
The 'aspect_ratio' is both get-able and set-able using the camera methods... but it defaults to 0 and therefore the view's screen sizes come into play in setting other values...
The complex interaction of fov/focal_length/image_width/etc will potentially change it - I was suggesting you could get the ratio from which setting you want to 'fix' and then set the aspect_ratio to suit from that ??
Advertisement