R8.6 Raytraced mystery

I’m a neophyte when it comes to rendering and materials. I’m using Raytraced with default settings and materials as you can see in the attached .3dm.

I don’t understand where the “ghost” image on the surface is coming from. Is it a builtin artifact? Am I doing something inappropriate? Is it a bug?

I’ll appreciate any help very much. @nathanletwory ?

RaytraceIssue.3dm (3.1 MB)

Material has IOR. Set to 1.0, and the image will vanish.

Hello- the curved surfce has no thickness so the image is a refraction from the object as if the dumball object were sitting in a solid mass of the material. If you give the surface some thickness, the refraction will be more what you expect.


If you do not want to add thickness, make a ‘thin’ version of the material with IOR = 1


OK. So it comes down to a difference in assumptions about how to handle a 0 thickness surface. Nathan assumed it should be treated as an infinite thickness material and I assumed that 0 thickness would mean no refraction at all no matter what the IOR was set to.


Well, I would say it comes down to how raytracing works.


The different approaches have already been mentioned, with adding thickness being IMO the correct one.

I do not assume anything. For refraction to work properly you need both an entry and an exit surface, just like you get in the real world.

Raytraced and Rhino Render have no knowlegde about how objects are created, especially considering that Rhino can break up one object into several separate meshes. Assigning a different material to one side of a box for instance results in Rhino passing it on as 6 separate parts to RhinoCycles. Here a bit exaggerated case, but you can see that there is both an entry and exit surface with the glass material:

And here the same from the same view orientation, but without the exit surface with glass material

Edit: important to notice that the box object is passed on to RhinoCycles as 6 separate meshes.

I understand what you are saying and that given how rendering systems have evolved to deal with refraction that you would not think of the way they work as “assumptions”.

I guess the problem is that their basic purpose is to replicate the real world and CAD systems are capable of creating completely fictitious objects like zero-thickness surfaces and a renderer developer like yourself must decide how to deal with them.

From my naive point of view I thought the renderer would completely ignore the IOR for such surfaces, but I didn’t think it through enough to realize that the renderer really has no way of knowing that a single surface has no “exit” surface. As I contemplate your explanation I conclude that the only way it can know is if the object is a “solid”, ie a closed solid polysurface like the one you show.

So, indeed if I want to actually depict a transparent surface I need to make sure it is a solid. In other words not just a simple offset but a closed one. If I just want to ghost a single surface I need to be smart enough to not assign an IOR to the material I assign to it. Is that about it?

Instead of setting a glass material or a material with opacity turned down use a Physically Based material and play with the alpha setting instead.