Assignment of "Light" Material Primitive to "Polygon" Primitive

Hello all,

I am having a problem assigning a simple “light” primitive to a “polygon” surface. To illustrate this issue, I drew up a really simple rendering and grasshopper .gh containing a 5ft x 5ft surface and a testing grid, which I have attached to this thread. The more than a couple of hours I have spent trying to fix this issue made me realize that I need help.


  • Assignment of other materials (glass, plastic etc.) work properly.
  • I have tried rendering the grid above and below the light source.

Link to .gh file

Link to image of rendering and test grid

I wonder if the surface-normal of the light polygon is facing upwards. Can you try flipping the “light” polygon and see if it works?
(I see only one grid, which appears to be below the light polygon).

Update: I was curious if this indeed was the case, and it is.

The geometry in your gh file was not internalized so I made up my own polygon. Rest of all should be the same. (488.6 KB)

Thanks Sarith,

I really appreciate this.

I have two follow-up questions.

(1) As part of my troubleshooting, one of my original renderings had the grid set above the surface. This grid did not detect any light. Would you have any instincts into why the grid did not detect any light?

(2) I noticed that you linked the Brep to both the surface and grid. During my tests, I had created two different Breps and connected one to the HBsurface and one to Grid. Would this have caused the issue? Here is the original 3dm rendering.



The grid is a collection of rays, where each ray is defined as a set of six floating point numbers: the first three specifying the location in global coordinates and the next three specifying the vector.For the simulation to register a non-zero value, the ray needs to be facing in a direction where there is direct or indirect luminance. So, if your grid is facing in a direction where there are no sources of light, direct or indirect, it won’t detect any light.

Although Radiance is a physically based rendering engine, the grid (or the rays that constitute it) does not have a physical basis in the simulation. The Brep connected to the grid component is just used to generate the rays through some sub-divison algorithm that you control by the gridSize (or some such) input. So, the Brep by itself is not directly relevant to the simulation, however, it’s shape and orientation determine the extent and direction of the grid.
I wont have access to Rhino/Gh till mid next week, but I think I did not link the same Brep. While I had used the same Brep as the starting geometry, I believe I had translated one of the using the Move component in Grasshopper.


PS: If you are addressing queries directly at a user on this forum, it’s easier to do that using tagging, like @Max as then the person gets notified. I think replies to posts do not result in notifications.