Implementation of the Radiance "Mist" Primitive

Hello all,

Does a honeybee implementation of the Radiance ‘mist’ primitive exist?

Need for a Volume Based Radiance Primitive
As part of my PhD research, I am using honeybee-legacy as a front end to the Radiance engine in an exploratory attempt to simulate radiation propagation in indoor farms. The farms grow their crop with total lamp sourced radiation or through a combination of lamp sourced and solar radiation. Academic literature has provided various methods of simulating the optical properties of plant canopies as either volumes(1) or distributed surfaces(2), and I am exploring both research pathways. However, all honeybee implemented Radiance primitives only allows implementation of optical properties on surfaces. Only the Radiance “mist” primitive allows implementation of volume extinguishing coefficients.

Honeybee Discourse Question
In this context, Honeybee appears to fully have the capability to act as a front end when simulating the crop as a distributed surface. However, to my yet nascent understanding, I have not found a honeybee script that implements the Radiance “mist” primitive(3). Am I looking in the wrong places? If so, could someone kindly point me in the right direction?

(1) Goudriaan, J. (1977) Crop micrometeorology: a simulation study. Simulation Monographs, Pudoc, Wageningen.
(2) Balakrishnan P, Jakubiec A. Measuring light through trees for daylight simulations: a photographic and photometric method. Building Simulation and Optimization. 2016.

I am not sure if the mist material in Radiance behaves like actual mist. It appears to be something that is used more to create an effect (as shown below, where it is used to mimic smoke):

I also doubt if anybody has carried out physical validation of simulations with the mist material as it would be challenge to model and replicate something like that. Anyway, I am just expressing an opinion. You might want to post about this on the Radiance discourse:


(PS: The picture above was screen-grabbed from this document:

Thanks for the response Sarith, I agree with you that the intended purpose of the “mist” primitive involves the hazy scattering application you brought up.

I also agree and hope that the mist primitive doesn’t behave as an actual “mist”. My takeaway from the radiance primitive documentation is that it acts like a turbid medium, and this emulation of turbid medium is perfect for applying the coefficients and estimates for a canopy hedgerow optical properties research.

With all that said, I have one follow up question. If I end up implementing the material myself do I need to make any modifications to honeybee recipe or simulation scripts in order to handle this material input?

I guess, unlike glass, BSDF, trans and BRDF materials etc, mist will not explicitly feature in any of the fenestration-related stuff. So, I am almost certain that recipe and simulation scripts won’t be affected by incorporating the mist material.

Hi Sarith,

I believe I have successfully passed the mist primitive into a grid based simulation! Thanks for your help!

I added the string "“mist” to self.radMatTypes on line 821 of the honeybee source code. Then, I used a panel to input a properly formatted mist primitive into radMaterial input of the createHBSrfs component. I then input a closed polygon to the same createHBSrfs component. From there, the process matches that of a typical grid based simulation.

I tested this implementation by confirming that there exists a negative relationship between the height of a cube and the amount of light absorbed by the volume enclosed by a cube polygon.

I need to confirm a couple of things before fully celebrating this implementation. First, I need to confirm that this implementation of the mist primitive correctly assigns the mist in a volume. To illustrate this potential issue, imagine placing two rendered cubes side by side with a little gap in between them. I don’t expect current implementation to assign optical properties to the gap, but I have not confirmed. Second, I have not fed the radMaterial bad input, so I have no idea what would happen if I passed in bad data (although I think this issue would be with Radiance 5.1 itself, not honeybee). Third, I am unsure how any image based simulations would render this implementation of the primitive.