A Simplified Plant Growth Simulation Prototype

来源:互联网 发布:mac系统ntfs插件 编辑:程序博客网 时间:2024/05/18 03:04

<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

sc
(Pictures from ‘Palubicky 09 SIGGRAPH’)
 

* Shadow Propagation

sp 
(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)


            bh
bh1
(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.

s1 s2

(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>