Rhino Camera

I am using rhino (and VRay) to replicate the same view as taken by a camera. There is clear camera/lens geometry that can be calculated eg an 18mm lens gives a horizontal field of view of 90 degrees; and a 50mm lens gives a horizontal field of view of 39.6 degrees.

So I am expecting the Rhino 6 camera to give the same results. But is doesn’t. I have created a very simple model to test this. It includes 360 columns located in a polar array around a central camera. I can change the Rhino camera lens to give whatever lens I choose. It is then very easy to check what horizontal field of view I get in the viewport window. VRay 3 then renders the same view geometry.

The problem I am faced with is the Rhino cameras appear to be incorrect. If the camea is set to 50mm I actually get a horizontal field of view around 46degrees (rather than the expected 39.6 degrees). If I set the camera lens to 60 mm I get 39.6 degrees.

It suggests to me that the Rhino 6 camera is set up incorrectly.

Could McNeel look into this, is there a there a fix?

If memory serves right, Rhino calculates lens length assuming a standard full format sensor and tries to fit that into the viewport without cropping. So if your viewport has a wider aspect, you will get a wider horizontal angle.

Did you try the Safe Frame overlay to verify your view angle?

I cannot recall where I found this, but the Rhino camera and lens is mapped onto a sensor/film with the same aspect ratio as the viewport, but the smaller dimension of that sensor is 24mm. For a 50mm lens, that means the field of view is 27° in the shorter direction (using fov = 2 atan(d/2f), where d = 24mm and f = 50mm). Your horizontal field of view is going to depend on the aspect ratio – what is your aspect ratio?

Edit: Just to clarify, if you are not using a 3:2 aspect ratio, your horizontal field of view will not be equivalent to a full-frame/35mm camera.

Thank you Halo

You are correct about the full frame camera format. As a result there is precise known geometry if we set the camera to, say, for example, 50mm. Like a matching camera with a 50mm lens the image should be 39.6 degrees wide.

I am struggling because I have started using use VRay3 for Rhino, which uses the Rhino camera geometry. In VRay 2 you can control horizontal field of view through the VRay interface. But with VRay 3 these controls are lost so we are now dependent on the geometry of the Rhino camera.

The Rhino camera when set at 50mm renders out a horizontal field of view of 46 degrees, which is clearly wrong.

I haven’t tried Safe Frame overlay. I simply created a simple Rhino model to carry out the camera geometry checks. I will do a quick search on this as I haven’t heard of it before.

Thank you savage

That would be a very strange approach by McNeel. I hadn’t considered that. But surely McNeel should be using standard camera lens geometry.

I wouldn’t have thought the aspect ratio should matter. All that does is control the aspect ratio of the finished render?

I think I have found a fix but it basically means I have to set the camera lens at 60mm to give me would I would expect from a 50mm lens.

I thought aspect ratio would simply change the horizontal/vertical render image.

Perhaps this is of use



Yes, Nathan, that is the page I was looking for!

1 Like

Mike, the Rhino field of view should match that of 35mm film if the aspect ratio is the same 3:2. I think the difficulty if what to do when the aspect ratio is different: do you fix the vertical fov, horizontal fov, diagonal fov, or something else? There doesn’t seem to be an obvious answer to that and McNeel had to go with something.

However, listing the camera by lens length is not a terribly intuitive way of controlling the viewport, especially given this behavior. It would be great if the viewport information showed the viewport camera’s horizontal and vertical fields of view and allow those quantities to be set directly, especially since a lot of users are just not that familiar with 35mm cameras and how their optics work.

1 Like

Thank you Nathan

This is beginning to look very promising.

I guess the question I still have for McNeel is why is a 50mm lens not standard, unless the aspect ratio is set to 3:2.

When it comes to camera/lens geometry it would be highly unusual for anyone to be using medium format or high format, or even cropped frame sensors.

But I really appreciate this, hopefully I can now get VRay 3 to work as I want it to.

@mike16 in case you might find it useful here is the code used by Raytraced in v6 to set up the Cycles camera (never mind the mess):

1 Like

Thank you Savage

It is the horizontal field of view I am trying to fix. What I am actually trying to do is render out 90 degree views using the ‘point cylindrical’ projection (in VRay).

This was reasonably straightforward in Rhino 5/VRay 2 because there were a lot of controls on the VRay2 interface. It didn’t matter what the Rhino camera lens was because the render was completely controlled in VRay.

The problem I am faced with in Rhino 6/VRay 3 is that the VRay3 interface has been cut back hugely. In my opinion this was far too radical.

The problem I am faced with is that VRay now depends on the Rhino camera geometrysettings for the resultant rendered image. It is also now complex to render in point cylindrical from VRay 3. Basically we have to edit part of the ‘visopt’ script, which is not in the interface.

I am in separate communication directly with ChaosGroup about VRay3, but what frustrates me is that VRay3 for 3DStudio retains the controls that were in VRay2 for Rhino. I really think ChaosGroup have really simplified their interface in VRay3 for Rhino far too much.

But hopefully thanks to you and Nathan I can now start to make sense of this, now I can see how the camera lens settings in Rhino are controlled.

many thanks!


Thank you for the code. Apologies, what actually will the code do for me?

By the way the Rhino camera is working perfectly now that I have set it up using the full frame camera aspect ratio. So thank you.

The one other problem I have is that I am wanting to render out ‘point cylindrically’, using the ‘point cylindrical’ camera setting in VRay3 (which is not available through the new VRay 3 interface). ChaosGroup have explained how to set this up (by changing the camera settings in the ‘visopts’ code, from 0 to 2…

But how do I ensure that when we render out a 90 degree view in point cylindrical projection that the vertical scaling is correct? I presume I set the Rhino camera at 18mm (to give the 90 degree view), I would then like the image to be rendered at 9000 pixels wide. Do I simply leave the aspect ratio at 3:2 to avoid any vertical scaling issues?

The reason why I want to do this is to give me a precise camera image match to a cylindrically projected camera image which I have taken. I could carry this out reasonably simply with VRay 2, but with VRay 3 this is far from easy.

I understand that Vray for 3DStudio Max retains the controls that ChaosGroup seem to have dropped for Vray for Rhino.

The code I linked to for illustrative purposes, to show what calculations are done to ensure the Raytraced mode has the Cycles Render engine draw to the viewport so it all matches up.

I don’t further know about point cylindrical projection nor about VRay, so I am afraid I’m not of much help there.