Getting started with light simulation in GroIMP. Some of this content should be moved to the wiki part and linked here.
–> This content should be moved to “FSP Modelling” as modelling of light is a prerequisite for modelling of photosynthesis.
This tutorial we show you the basics on how to do light modelling in GroIMP.
Regarding light sources, GroIMP provides a complete set of possible implementations. They all implement the Light and LightBase interfaces, which makes them easy to handle and exchange. The standard light sources are: PointLight, SpotLight, and DirectionalLight.
To set the optical properties of an object, in computer graphics the so-called local illumination model is used. It defines so-called shaders, that are define the amount of absorption, reflection and transmission and how the light rays are scattered. The values for absorption are obtained as the 'remaining radiation', i.e., the difference between reflectance and transmission, when we subtract the reflectance and transmission from the total of incoming radiation: Absorption = Total - Reflectance - Transmission.
Sensors or sensor nodes are invisible objects that can be used to monitor light distributions with a scene without interfering with the rest of the scene or the light modelling. For this, GroIMP provides the SensorNode class, a spherical object that can be placed arbitrarily within the scene. To obtain the sensed spectrum, the function getSensedIrradiance() for the Twilight and the getSensedIrradianceMeasurement() function for the GPUFlux light model needs to be called.
Sometimes it is interesting to see the traces of light rays emitted by a light source when they travel through a scene. In GroIMP, this can be done using the integrated LightModelVisualizer.
So far, we only used the light model to obtain the amount of absorbed power for the objects within our scene, but there is more :)
Note: The following is only implemented for the CPU-based twilight light model of GroIMP and NOT implemented for the GPU-based Flux light model.
The twilight light model offers further functions, e.g., to obtain the received and transmitted power.
Light distributions, micro-light climate, light above canopy, light extinction coefficients, etc. are key parameters for any canopy simulations. To obtain these, areal or gird like sensor arrangements are required. Both can be generated within GroIMP by only a few lines of code.
For an introduction to SensorNnodes have a look at the Sensors tutorial.
These three core aspects of light simulation—global and local illumination models, and light sources—are the base for any light simulation. When it comes to spectral light simulations, specialized implementations of the aforementioned aspects are required, capable of simulating not only one or three light channels, as is typical for common light models, but also the entire light spectrum for different wavelengths.
Open SpectralLight.gsz and explore the four files it consists of: Main.rgg, Modules.rgg, Parameters.rgg, and KL.java. The names already suggest that in Main.rgg you will find the main parts of the model, notably the methods init() and grow(), but also methods to create and update the graphical output on charts (initChart() and updateChart()); in Modules.rgg the definition of all modules used in the model; in Parameters.rgg all parameters; and finally we have again the photosynthesis model KL.java.
In this tutorial we will see how to get started with a FluxModel in GroIMP.