Centre for Crop Systems Analysis - Wageningen University
24/03/2023
VPL + website + other packages
Optional packages to help build FSP models:
A website with all the documentation and tutorials on VPLverse
When building an studio/platform you are responsible for:
Since VPL is just a Julia package we get (most of) this for “free”
How do I do X in VPL = How do I do X in Julia (in most cases)
Domain specific languages have advantages:
And disadvantages:
VPL addresses four main components in FSPM:
A tree graph represents topology of a plant (nodes, internodes, leaves, etc.)
A node can store any user-defined data type (<: Node
) as well as the graph itself (vars
)
Each data type has a method that defines its geometry, material and color (feed!
)
Graph edges created by a simply node algebra:
Node() + (Bud(), Leaf()) + Internode() + Meristem()
User defines functions to implement:
Relational growth rules can replace nodes by subgraphs (Rule
& rewrite!
)
Relational queries can extract combinations of nodes (Query
& apply
)
Different graphs can be queried/rewritten in parallel (multi-threading)
A Scene
contains
Scenes are created from graphs using feed!
Individual elements can be added to the scene manually (add!
)
Mesh constructors are provided for common shapes (cylinder, rectangle, etc.)
Meshes can be exported/imported to/from other formats (e.g. OBJ, STL, PLY)
Graphs can be rendered as networks diagrams and labels can be customized
Scenes can be rendered with a simple 3D interactive engine
All visualization based on Makie.jl that supports OpenGL and WebGL
Snapshots can be exported
Multi-threaded, multi-wavelength forward Monte Carlo ray tracer
Acceleration with SAH-based Bounding Volume Hierarchy
Common radiation sources are available (point, directional, area, line)
Common materials are available (Black, Sensor, Lambertian, Modified Phong)
Users can add new materials and light sources (not documented yet)
Sky.jl creates light sources for diffuse and direct solar radiation
Use instancing to approximate large canopies (grid cloner)
Could have multiple ray tracers in the same model