Groimp migrates to Gitlab. You can find the latest code here and documentation here . The version on Sourceforge will not be updated anymore.
Please create wiki pages! We hope to have a user perspective to facilitate model building for novice and expert users alike.
Wiki: Creating an own node class
Wiki: Creating an own plugin
Wiki: Installing GroIMP
Wiki: International Summer School "Modelling of Ecosystems by Tools from Computer Science", 16-20 September 2013
Wiki: Making a GroIMP release
Wiki: Setup GPUFlux for Eclipse
Wiki: Translating GroIMP into other languages
The link for the "for modeller" session is broken. I think the information for this session is very useful. it would be very nice if some one can fix the links. best regards. junqi
hi junqi, thanks for the note! you are right, the links are broken. they got lost during sourceforge moved/updated to a new version. we are currently, looking to get them restored.
similar for the summer school and workshop links. here are alternative links for them:
http://www.uni-forst.gwdg.de/~wkurth/workshop15_an3.htm
http://www.uni-forst.gwdg.de/~wkurth/summerschool13.htm
http://www.uni-forst.gwdg.de/~wkurth/workshop12_pgm.htm
http://www.uni-forst.gwdg.de/~wkurth/summerschool10.htm
Can interface be used in GroIMP?
hi junqi,
each interface and class belongs to a single file of the same name as the interface or class. and the file extension should be ".xl" instead of ".rgg". have a look at the "FSPM model" within the groimp own example gallery to see how to deal with interface, classes and pure -xl files.
cheers, micha
Hi Micha, thanks very much for the detail explanation. I will have a try of
the xl file.
Cheers junqi
On Sun, 3 Oct 2021 at 06:03, micha mh1@users.sourceforge.net wrote:
Hi,
I would like to run my project from the cmd as I would like to run multiple simulations with different parameters. I understand that it is done somehow with
de.grogra.xl.compiler.Main
andjavac
, but I'm not sure how I should change the code, and what file I should add in the cmd. Could you give more details please? Thanks!Cheers,
Lili
Hi,
I wonder if someone already developed a model for simulating the daily course of the sun based on latitude and day of the year. This should be included in a simulation model of olive tree. By the way, if someone wants join to this challenge, is welcome!
Cheers
Marco
Hi Marco,
I have a model for simulating the daily course of the sun based on the
exercise book of Jan Goudriaan.
It was included in the grapevine model and the whole source code is
available at the GroIMP gallery.
See
http://134.76.18.36/wordpress/unpublished/gallery/grapevinexl-model/
Cheers
Junqi
On Wed, 5 Jan 2022 at 22:18, marco moriondo morio1968@users.sourceforge.net
wrote:
Hi Junqi,
great paper and great code. Thanks
I still have two questions about the diffuse radiation module.
I see from figure S3 in SI of your paper and the corresponding code in environment.rgg that you share the diffuse radiation between 72 light nodes arranged in a hemisphere.
From diffuse light module I see that the light is shared according to coefficients that depend on the position of each node. E.g. 12 light nodes of the bottom layer emit diffuse radiation weighed by (0.003218/0.205) while at the top of the hemisphere the weight is (0.007096/0.998).
Could you please explain what is the meaning of these coefficients?
By the way, still from figure S3 I see that you set the surface of each light node equal to the filed size but actually I was not able to do that.
Could you help me?
Thanks in advance for any possible help.
Cheers
Marco
Hi Junqi,
Great to see your interest in this and checking the code carefully.
From diffuse light module I see that the light is shared according to
coefficients that depend on the position of each node. E.g. 12 light nodes
of the bottom layer emit diffuse radiation weighed by (0.003218/0.205)
while at the top of the hemisphere the weight is (0.007096/0.998).Could you
please explain what is the meaning of these coefficients?
The first coefficient (e.g., 0.003218 ) represent the weight of the amount
of diffuse radiation comes from this direction. This weight is
calculated under overcasting conditions based on the model of Chelle and
Andrieu 1998. "The nested radiosity model for the distribution of light
within plant canopies".
The second coefficient is for correcting the power reduction for the
incoming angle. GroIMP radiation model automatically corrects the power
received by each surface according to the angle of the incoming radiation.
so if your input power density is at the horizontal plane, then the
incoming radiation power density is actually larger than the one measured
at the horizontal plane, and an angle correction is needed. Alternatively,
if you know the power density from each direction, then the second
coefficient is not needed.
By the way, still from figure S3 I see that you set the surface of each
light node equal to the filed size but actually I was not able to do that.
Could you help me?
There is no need to set the surface size of the light node. As far as i
understand, the size of the light node adjust itself based on the size of
the scence.
Cheers
Junqi
On Fri, 4 Mar 2022 at 01:04, marco moriondo morio1968@users.sourceforge.net
wrote:
hi,
to follow up on this:
"There is no need to set the surface size of the light node. As far as i
understand, the size of the light node adjust itself based on the size of
the scene."
that's only the case for DirectionalLight lights, they adapt to the size of the 3D scene automatically. That's why you use/set a power density instead of a power value here. all other light types (point, spot, area light) do not adapt to the size of the scene.
cheers,
michael
Hi,
Can anybody here, please explain me how to use GroIMP to simulate future Landscape? Anyway to get an idea?
Thanks,
Shameen
Hi,
I would like to add a rainfall flux to my scene. I have modified the model provided by Junqui
http://134.76.18.36/wordpress/unpublished/gallery/grapevinexl-model/
for daily course solar radiation by including a photovolatic system over the scene. The model includes the simulation of daily direct and diffuse solar radiation.
Aiming at simulating rainfall rate inteception by the objects in the scene, photovoltaic panels and ground, the first idea was to set a light node over the scene that is feeded, hour by hour, with observed rainfall rate and then calculate the relevant interception for the sigle objects. Unfortunaltely, I'm not able to disentangle the contribution of of this single light node from the other souces (direct +diffuse), but of course, the model integrates the contribution of all sources.
all possible ideas are welcome!
cheers
Marco
Hi,
I import an object into the scene through the GUI interface. If I would like to manipulate some properties of this object, such as obtaining the surface area of the object, setting the parameters of BSDF, etc., what should I do? Can someone help me?
Thanks,
JP
Hi,
Advanced object manipulations can be done through XL queries. Usually done in an RGG environment.
E.g. this query print the surface area of all Spheres in your graph:
[x:Sphere::>println( x.getSurfaceArea());]
.You can find more documentation on how to use them in the documentation: http://wiki.grogra.de
Hi,Gaetan
Thank you for your response! I am a bit confused about importing a complex 3D structure from a GUI interface, such as an obj file with a triangular grid. It seems that this structure is not recognized as basic geometry in GroIMP, like Sphere. If I need to perform advanced operations on this 3D structure, such as setting BSDF and so on, how can I achieve this using XL queries or other methods? Even though I named the 3D structure through the GUI, I couldn't locate the object. Can you assist me if you have any insights?
Thanks,
JP
Hi,
The objects imported from an OBJ file are added as one MeshNode in groimp. To map the objects in a file to groimp primitive objects you can either use a file format that support this mapping (e.g. x3d or gltf), or do the mapping manually (which i do not recommend).
If you need to see each triangle of your mesh as a separate groimp node you can also use the ply importer from the PointCloud-Importer plugin (https://gitlab.com/grogra/groimp-plugins/Pointcloud-Importer).
I don't know mush about the BSDF, and light modeling in general. But aren't these handled though shaders? If so, you can change the shader of your object either with the GUI you click on your object and use the Attribute Editor panel, or with rgg
yourNode.setShader(new RGBAShader());
. If you need to perform some advanced operations on the nodes (or even simple ones) I would advise to use the rgg code.You can access a specific node in a XL query with :
* get by name
Hi,Gaetan
Thank you very much for your answer! I can use the RGG code to locate the imported 3D structure and do something with it! This is amazing! Thank you for giving me a further understanding of GroIMP!
Thanks,
JP
Hi,Gaetan
Thank you very much for your answer! I can use the RGG code to locate the imported 3D structure and do something with it! This is amazing! Thank you for giving me a further understanding of GroIMP!
Thanks,
JP
Hi,Gaetan
Do you know how I can add the Pointcloud-Importer plugin to GroIMP, I didn't find it in the plugin manager, I followed the link you provided and downloaded the plugin's zip, but I still don't know how to load it, even though I've looked at the wiki documentation for GroIMP.
Thanks,
JP
Hello,
Could you give me more detail on what is working (and not) with the plugin manager? The Pointcould importer plugin should be accessible from there. Do you see any other plugins?
Otherwise, if you download the plugin from gitlab. You need to see if it is already compiled or not. If you have java classes, it needs to be compiled. If you have a .jar you can use it. (download the jar there https://gitlab.com/grogra/groimp-plugins/Pointcloud-Importer/-/packages/24921990 at the bottom of the page.) or compile it with maven.
Once you have a compiled version of the plugin. You can add it manually to your groimp installation by:
1. creating a folder with the same name (Pointcloud-Importer in this case).
2. extracting from the .jar the
plugin.xml
andplugin.properties
files3. putting the 3 files
plugin.xml
,plugin.properties
, and the.jar
in the folder.4. move the folder to "c://path/to/groimp"/plugins/ where "path/to/groimp" is the path on your computer.
Hello,Gaetan
Thank you very much for your answer! I can use this plugin successfully now!
Regarding the question that I didn't find the plugin Pointcould importer in the plugin manager, I was previously trying to find this plugin in the plugin manager in jEdit, where I didn't find it, and after I saw your reply, I first tried to add this plugin manually, but I wasn't successful. The reason was that after launching GroIMP the software threw a window and prompted me that the library jply.jar was not exist, after that I realized that the plugin manager in jEdit in the RGG project was not the same as the plugin manager in the original panel of GroIMP, and finally I found this plugin in the plugin manager in the original panel of GroIMP!
Thanks,
JP
Hello,Gaetan
I'm having trouble learning groimp again and would like to ask for your help again.
I want to insert a. X3D files are duplicated multiple times in the scene and given them different names so that I can later make changes to each . X3D file is modified individually.
I added the .X3D file via the Object button (there are 3 ways to insert the file: Add \ Link \ Embed), and then I was able to use it in RGG code by using a
const Reference PSL = reference ("PSL");
statement, but then I couldn't use then:MeshNode, (n.getName() == "X3DIndexedFaceSet")::> {};
way to find it.However, if I insert a file directly through the Objects button (there are 2 ways to insert a file: insert file \ insert file to RGG), I can query it through the above query statement, but this way I add a new . The X3D files appear in the same place in the scene by default, they coincide, and I need to manually add the files every time, which is very detrimental to the subsequent operation.
This confuses me and I would like to ask if you have any good ways to do it.
Hi,
For the "Reference": When you import an object in the "object explorer" (the object panel), you can create references to that object with "new Reference("name.file");". You can always use the "Add" option, it copy the file within your project.
Then, by default the reference is only resolving an "instance" of the object (not the x3d nodes themselves). You can however get the nodes behind the reference by using:
Be careful however, if you modify these resolved nodes, the changes will be pushed to the file in memory. (i.e. if you use r.resolveNode() again, it will includes the changes).
If you want to apply modifications on your objects through some RGG code, I would advise you to use the SubGraph objects. They work similarly as References but they are more suited for using one file object several time in the scene. You can use them by installing the plugin "graph-explorer" (at least v0.3). Then, open the 'subgraph explorer panel" in panels>explorer>subgraphs. Add your object in that panel. Then, you can add the nodes in the graph with
I have attached a small project to demonstrate how to use them, and query the inserted objects in the graph based on their name.
If you only plan on modifying the objects through the GUI, it might be easier to simply add them with the "Object>insert" menu.
From that menu there are two possibilities:
1) "Insert File" will add the object to the root of the graph. Objects inserted at the root of the project are not deleted when the project is recompiled, or reseted.
2) "Insert File to RGG" will add the object under the RGGRoot node. The RGGRoot node is deleted and rebuild with the init() method when the project is recompiled or reseted. Thus, all objects added under it will disappear.
Note that either way, you can delete all nodes (even the one not under RGGRoot) by clicking on "Edit>Clear project graph".
You can see the shape of the graph by opening "Panels>2D>graph".
I hope it helps