Potential Improvements to the LB Ray Tracing Component

Hi Chris, thanks for your efforts here.

Apparently am not the only one nagging for a more advanced external glare components.

Since running Grid Based Veiling Luminance study similar to the DGP seems not easy to do atm. Could we improve the Raytracing component as this will help identify the times were we could test PIT?

My main issues with the RT component are:
1- 3 issues with Raytracing;

1- we cannot set up a receptor (a final receptor where reflected light is reaching). This would eleminate thouthands of unneccessary rays and make the results more readable.
2- The script draws vectors on the reflecting surface even if there is a burier blocking the ray. in other words, if the ray is directed toward the reflecting surface, and there is a building in the way (added to the context), the component is still going to drop the ray and will bounce of the context. The problem here is that we end up with endless number of rays which are not even reaching the reflecting surface.
3- if a new component can simply identify the times when the reflection reaches the receptor.
4- a limitation I struggle with is the 1 hour interval in the Sunpath, which misses thouthands of minutes in such study which could be critical, as glare may occour in between the 1 hour interval.

And a minor request if you could add on/off toggle to the component. usually if runnung annual rays, it freezes for days.

Pardon me, last question, can we run such studies using pollination?

1 Like

Hi @Hamzajh19 ,

I moved your comments to a new topic since you’re getting away from Radiance modeling in the other discussion and focusing more on the LB Surface Ray Tracing component, which uses Rhino-based ray intersection methods

One of your concerns already has a solution:

You can plug decimal values into the hoys_ input of the LB Sunpath (eg. 13.5) and this will give you the sun position at the sub-hourly position. This is partly why the LB Calculate HOY input has a _minute_ input:

It’s also why the LB AnalysisPeriod component has a _timestep_ input:

Most of your other concerns are easy to address with a few tweaks to the component. Give me until the end of the weekend and I’ll try to push a new version.

1 Like

Hi @Hamzajh19 ,

It took me a little longer than planned but I just pushed several changes to the LB Surface Ray Tracing component:

Pretty much all of your comments were good suggestions and were relatively straightforward to implement on the component. This is what the new component looks like now and you can get it on your end by running the LB Versioner component:

To respond to each one of your requests:

The new component has an optional input for reciever_ when specified, the rays will be filtered based on their intersection with this reciever_ geometry. only sun rays that reflect off of the _source_geo and have their last bounce intersect this receiver within the _last_length_ distance will appear in the result. This should help you filter the results:

No Receiver


The new component has an optional boolean input for context_block_. If you set this to True, this will count the input _context as something that fully blocks rays as opposed to having the rays simply bounce off of it.

Without Context Blocking

With Context Blocking

This has been added as you see in the screenshot above. FYI, you can always work around the lack of this by just disabling and then enabling the component. But I realize the boolean input is nice.

I already answered question 4 but this one I leave for you:

You can do it with careful management of your data trees out of the component when you connect multiple sun vectors.

1 Like