Tree growth phyllotaxy - an experiment

   4077   6   2
User Avatar
Member
10 posts
Joined: June 2015
Offline
Some various tests and renders of a little 2-3 month personal project, to practice houdini and vex.





This is inspired by - obviously - the great A. Opara talk about biological tree growth, and that push me to implement my own take on it, surely not as elegant nor efficient tho!

I started with the idea of an avoidance model, based on an modified version of the ambient occlusion vex code (sop context) from Tokeru wiki, so many kudos to Matt Estela and the awesome tokeru wiki, which taught me the base of vex for many months (love the gifs!).

The pseudocode for the growth is:
only on active points
check next possible positions within a cone
accumulate occlusion for each possible points
choose the one with the least occlusion and set new direction
blend with previous direction
check chance to split in branches and spawn new active points with correct orient
grow toward new direction based on apical ratio, occlusion, iterations, stepsize, etc…


Features for now:
- geo avoidance (random or even search points)
- branch angle, tropism & gravity influence
- codominance chance (need work)
- break chance of branches based on length (need rework)
- Root system
- leaves instancing, no sim for now but its fast
- generated geo + uv with sweep (tokeru wiki was a great help here once again)
- wire sim + procedural constraints
- geo capture with for-each branches id + wirecapture
- wind affecting wire sim + fake leaves movement (for speed)



It's not as art-directable as some more traditional tree modeling method, but i had a lot of fun developing this one and adding features.

Todo:
- simplify parameters (way too many to be really practical)
- rework of the random branch cut, impact the growth time calculation too much because of the foreach within foreach
- better handling of codominant branches geo creation ? uv looks bad
- surface attraction for ivy-style effect
- code and network clean-up cause it's a mess and some attributes are not used anymore
- better leaf generator
- …


When i first started, the plant only divided when enough amount of energy was accumulated on active points, then splitting would drain some energy. It was somehow quite uncontrolable but produced some crazy result. I even implemented a graph monitoring energy for that, I would like to fix it at some point.




Thanks for your attention and, in advance, sorry for any engrish in the text ! (not a native english speaker)



more render tests here [www.artstation.com]
Edited by bdav - Feb. 14, 2019 18:52:37

Attachments:
TreeGenBdav.gif (1.7 MB)
3.3Brender01.jpg (725.8 KB)
treephyllo.03.3C.codominance.jpg (4.7 MB)
treephyllotaxyscreen.jpg (430.3 KB)
oldgraph.jpg (44.4 KB)

User Avatar
Member
1265 posts
Joined: March 2014
Offline
Fantastic work. Wow.
Werner Ziemerink
Head of 3D
www.luma.co.za
User Avatar
Member
10 posts
Joined: June 2015
Offline
Thanks Werner !
User Avatar
Member
806 posts
Joined: Oct. 2016
Offline
I love it! I am “so into CG-plant-growing” :-)
A few years back I created a plant-growing-system that used energy-sources (light) as guidance. By (keyframed) increasing or decreasing the amount of light available from a certain direction (and by avoiding shadowy areas) you could direct the growth and development of the plant (with the advantage of growth not being too linear, but more “natural”/randomish).
Your experiment makes me want to go back to that project.

Time … oh … someone send me a bottle of time.


Did I say that I love what you did there?


Marc
---
Out of here. Being called a dick after having supported Houdini users for years is over my paygrade.
I will work for money, but NOT for "you have to provide people with free products" Indie-artists.
Good bye.
https://www.marc-albrecht.de [www.marc-albrecht.de]
User Avatar
Member
10 posts
Joined: June 2015
Offline
Thanks Malbrecht
Sounds great, did you compute illumination in sop context?
would love to see some screens!
User Avatar
Member
806 posts
Joined: Oct. 2016
Offline
Moin,

bdav
Sounds great, did you compute illumination in sop context? would love to see some screens!

… you could say so. I did it in FabricEngine where everything was everything and you could do, well, literally everything :-)
Unfortunately, with the removal of FE from the market, I cannot provide any screenshots any more, but I can send you a link to an old YT video that I made in modo (my YT material is not public any longer) - it's not “that impressive”, though …

The light-searching was extremely simple, just a one-bounce-max attempt to see if a “node” could “see the light”, if yes, it got promoted (could move on), if not, it stayed.
I had a couple of ideas about how to make intertwining branches cooperate better but never found the time to dig deeper into it. Might be a fun project to try in Houdini, actually.

Marc

Edit/PS
Two screengrabs from the video mentioned, one showing two light sources I used to “art-direct” the growth of the vine, one showing a render.
Edited by malbrecht - Feb. 18, 2019 03:22:51

Attachments:
one.JPG (42.9 KB)
two.JPG (43.8 KB)

---
Out of here. Being called a dick after having supported Houdini users for years is over my paygrade.
I will work for money, but NOT for "you have to provide people with free products" Indie-artists.
Good bye.
https://www.marc-albrecht.de [www.marc-albrecht.de]
User Avatar
Member
10 posts
Joined: June 2015
Offline
Looks really cool, thanks for sharing !
  • Quick Links