We are currently performing outdoor comfort assessments using RayMan. For this workflow, the sky/shading mask generated from the observation point must be imported into RayMan, which expects an equidistant (angular fisheye) projection. At the moment, the default stereographic projection used in Ladybug causes distortions near the horizon when imported into RayMan, leading to an overestimation of horizon obstructions.
As a workaround, I managed to generate an equidistant projection by running a Point-in-Time View-Based simulation in Honeybee using an angular fisheye view. This produces the correct projection for RayMan after some image post-processing and conversion to BMP format.
However, this workflow is not so straightforward. I was therefore wondering whether an equidistant projection option could eventually be added directly to Ladybug’s sky mask / sun path visualization tools.
Besides RayMan compatibility, I think this could also be useful for visibility and urban obstruction studies, since I believe equidistant projections provide a more intuitive representation of horizon obstructions.
This is definitely a feasible request and I had always had plans to implement more projection types. I am not going to have time to add it in the immediate future but, if someone wanted to contribute it, the way to go about this is to add a new staticmethod on the ladybug-core Compass class, which converts from 3D coordinates to the equidistance projection. Similar to what you see here for orthographic and stereographic:
Once we have that, exposing a new projection on all of the dome-related classes (Sunpath, Radiation Dome, Sky Mask) is relatively straightforward.
I submitted a PR to add the “equidistant” and “equal volume” types. I have reviewed the relevant materials and found that adding both types simultaneously would be more reasonable.
I finished generalizing the way that projections are specified by all of the Ladybug classes such that, now, all we have to do to add support for new projections is to add staticmethods to the ladybug-core Compass class with the same format and naming convention that @ZhengrongTao used in his pull request.
This also means that plugging in Equidistant and Equisolid for any of the Ladybug components should work after you run the LB Versioner.
Thanks for the contribution, @ZhengrongTao , and thanks, @bianca.fox, for bringing up the request.
Amazing thanks @chris. I ran the LB Versioner and now have both the Equidistant and Equisolid projection options available in the LB SunPath and Sky Dome components.
However, the LB Sky Mask component still only seems to offer the Stereographic and Orthographic projections. I wonder if these are defined differently ?