Total internal reflection raytracing?

Hi All,

We are currently designing moulded transparent plastic components (polycarbonate) which will be used to control the spread of light from a number of LEDs, in the same manner as a fairly conventional light-pipe but a little more complex.

This application doesn’t really justify the cost and learning curve of an optical analysis software package so I’m looking for a more straightforward solution which will allow simple visualisation of light beam spread and intensity distribution.

We’ve previously used the standard rendering capabilities of Rhino 5 to produce realistic product images including transparent moulded components and clearly the refraction behaviour is modelled rather nicely. We were hoping that the ray tracing abilities of the standard rendering package would cope with total internal reflection which would give us the type of simple visualisation we’re hoping for.

Our plan was to start by building the assembly of LEDs and transparent components, assigning material properties as necessary. Then we were hoping to surround the assembly with a thin-walled translucent spherical shell so that the patterns of light emitted from our optical assembly within would illuminate the sphere from within in the same manner as a back-projection screen. Then, by creating rendered views of the outside of the sphere from different viewpoints we could get a fairly reasonable idea of uniformity of light spread.

So far however we’re not having much success - as far as we can discover, the rendering does not seem to deal with total internal reflection. So… my questions are:

  1. Are we correct in concluding that the rendering engine in Rhino 5 does not deal with total internal reflection?
  2. Are there any alternative renderers which operate with Rhino which will do what I’ve described?

Thanks in advance.

@ThomasAn may have some good advice on this.


1 Like

Bella render (by Diffuse Logic) is the continuation of Maxwell render from the original engineers, but all new from the ground up.

The Atlas engine in Bella is a physical spectral engine, that can do total internal reflections and advanced caustics.

For example: Total internal reflection at various degrees of bend dielectric.
The rays bend around the corner and illuminate the grey card

The light at the base of each glass tube has a lettering that is transmitted within the glass and seen at the other end like a fiber optic

This is a total internal reflection validator scene used internally for testing.

You can see the output of that engine on my profile Portfolio here


Thanks to you both.

Bella certainly look interesting. I might have a play with the demo version although I’m already getting a feeling that I may disappear down a time-consuming but thoroughly enjoyable rabbit hole. My boss is already shaking his head in despair at the prospect.

As to one of my original questions - do you know if I’m correct in my early assumption that the standard Rhino render engine does not support total internal reflection?

Hi -

That is correct, yes.
Apart from that, Bella is for Rhino 6 and 7 - are you looking for something that will run on Rhino 5?

Cycles does support total internal reflection, but only partially.

You will be able to see the internal reflection ONLY if they go directly from glass-to-camera.
If the reflection touch any diffuse surface they will not register.

For example. Here is cycles looking at the fiber optic effect directly to the camera

BUT, the tubes will not project the glow onto a surface. So the card is not illuminating

ALSO, in the previous scene with the red laser beams you would see nothing reflected inside the glass and bellow the glass.

Thank you all for you excellent and valued input - I love it when forums work constructively like this.

I know I’m a bit behind the times with Rhino 5. I keep putting off the upgrade because I’ll have to upgrade hardware and Windows at the same time. Life recently has been just too full with keeping the wheels of industry turning to indulge in such luxuries as up-to-date software. Time to crawl out of the stone age I think.

Thanks again.

FWIW, Maxwell Render still has a Rhino 5 plugin.

i think there is a slight confusion going on. Rhino 5 never had raytracing, that all started with Rhino 6. so for anything fancier than Rhino 5 built in render engine you would have to resort to plugins. this or you get yourself an update for Rhino 7 (costs the same as jumping from 5 to 6) then you would at least have cycles (raytracer), which as noted is a bit confined in some aspects.

Could be complicated. I don’t know if the current Rhino plugin for Maxwell is compatible with Rhino 5. I don’t think it is because Jeremy was the developer for that and he moved to Bella along with the Maxwell engineers. So for Maxwell … you would have to use the older version of the plugin if you can find it and also get an older version of Maxwell too; I think 2.7 (?)

I was in your shoes a year ago. Was running Rhino 5 on a frikin tablet (a surface 2 pro from 2013) and I was also running Maxwell 2.7 on it.

Was forced to bite the bullet and upgrade to Rhino 7 and also get a new laptop (like a Lenovo Legion with 2060 GPU), the whole thing (Rhino+Laptop) cost me like $1400

There is a distinct plugin for Rhino 5 (64 bit version only). Latest release was, I think, July 2021, same as the version for Rhino 6 and 7. It is compatible with the latest version of Maxwell (5.2). All can currently be downloaded from Next Limit’s Customer Portal if you have an account.

p.s. Lest anyone be confused, I am not the same Jeremy as the developer Thomas refers to!

Interesting. Thanks for the correction !

1 Like

Thanks again all.

I’m getting the feeling that all of this will be the catalyst for for me investing in a HW+SW upgrade - It had to happen one day, can’t be a dinosaur forever. Time to raid the piggy-bank.

Out of curiousity, encephalon made a comment a couple of days ago about Rhino 5 not having raytracing and I’m wondering whay “raytracing” really means in the world of rendering and/or CAD.

Clearly the rendering activity achieved by Rhino 5 must take into account how beams of light behave in terms of illuminating bodies, reflecting, refracting and so on when generating a rendered image. This is why I used the term raytracing as Rhino 5’s behaviour seemed to be akin to that of optical design software.

Can anybody educate me about the subtleties of “raytracing” terminology in Rhino world?

Actually it doesn’t account for how light reflects in any way. It’s an older kind of rendering technology more similar to how the OpenGL works–a bunch of relatively crude hacks that kind of create an approximation of certain real world effects, if you use them really skillfully. Older raytracers could create actual reflections but didn’t actually bounce light around. Modern GPU path tracers are much more brute force realistic. Actually I forget if the old rhino renderer had raytraced reflections I hadn’t used it since V1 days.


Out of interest a few months ago I spent a bit of time getting Rhino 5 to generate rendered images of a small electronic product I’d been working on which involved components of various types, colours and textures housed within a moulded clear polycarbonate housing. At the time I impressed myself with the results I achieved and now I’m even more impressed when I learn that there was no raytracing going on.

There certainly seems to be something which looks like refraction going on through the transparent moulding - impressive results for a crude non-raytracing technique.

Yeah I guess it’s doing some raytracing, but it’s the most simple kind, it’s strictly for direct lighting, reflection, and refraction; it’s not actually bouncing photons around the scene.