<Please mention the source if you wanna forward this article>
This work is completed as the final project for my GPGPU class.
This simple prototype is the implementation for paper ‘Self-organizing Tree Models for Image Synthesis’ by WKSABR (also refered as Palubicky09SIGG).
The key algorithm is the Apical Control in plant growth (Borchert-Honda Model).
Because of the limited time (about only 3 weeks, with another project paralleled at the same time), my plant growth model is quite simplified, the calculation scale is quite small – my application adopts only a 80*80*80 resolution while 800*800*800 will definitely look much better - and many useful techniques are not involved as texture.
Plant Growth Algorithm
* Space Colonization
(Pictures from ‘Palubicky 09 SIGGRAPH’)
* Shadow Propagation
(Pictures from ‘Palubicky 09 SIGGRAPH’)
The initial intention for shadow propagation is to simulate the shadow within the internodes/leaves/flowers so to make a more realistic lighting condition. Plus, we can use this shadow matrix to simulate ray-casting shadow.
* Bud Fate Calculation (Borchert-Honda Model)
(Pictures from ‘Palubicky 09 SIGGRAPH’)
* Gravity Effects
After we got the optimized shooting vector by Space Colonization and Light Condition, we can add gravity vector to simulate the gravity effects on internodes/leaves.
* Branch Diameter Calculation
d = d1^n + d2 ^ n
d1 and d2 are child internodes of d. It is said this equation is invented by Leonardo da Vinci – what a genius!
GPU Acceleration
* Space Colonization & Shadow Propagation
The kernel function is executed based on each voxel – the gathering is much better for GPU.
* Ray-casting Shadow Calculation
Rays are independent with each other, and this leads to a perfect GPU application situation. But at last a Bi-Linear smooth is needed.
(Yes the right one is my final image – like a bunch of leek because of the over-simplified BH-model.)
Future Work
1. Shedding implement.
2. Texture Enabled – it will definitely make the final picture look much better.
3. Internode using cones so to smooth the nodes – if I don’t want to simulate a bamboo tree, it will be better to smooth the nodes.
4. A more completed Borchert-Honda Model. The current BH model is over simplified. A more complete BH-model will make my tree much more realistic.
5. A larger resolution, say 1024 * 1024 * 1024. My current resolution is 80*80*80 which makes my model more like a 80’s application. But for a larger resolution, I need to separate the kernel execution into several parts – too long execution time will make Windows Watch Dog crazy. It is a big topic though.
P.S. It is really a great pity that I don’t have enough time to refine this project, unless I would like to take it as my master thesis – a relatively complete model will result in a very pretty and realistic plant image ! (Please refer to the paper)
But I do have my plan for another project(s)… Yeah you will see…
<Please mention the source if you wanna forward this article>