# Procedural tree modelling (branches)

## Recommended Posts

I'm trying to create a high resolution procedural tree model (without using SpeedTree etc). I looked into L-systems but thats not much use for a more detailed model that is made of one mesh.

This is a really interesting tutorial (and has been posted before) - http://www.andyboyd3d.com/siggraph_talk/img27.html

But i'm wondering if theres a procedural way to create the branches (seen here - http://www.andyboyd3d.com/siggraph_talk/img32.html). I'm guessing this part was actually done manually but it would be great to have a procedural method!

Cheers,

Mike

• 1

##### Share on other sites

http://disney-animation.s3.amazonaws.com/library/tangledProcTrees.pdf

Recursive particle emssion is an interesting way with

- collision with boudary object

- particle avoidance

check the recursiveSplit exemple in houdini doc as a starting point.

i've attach a rough test ...

recursive.hipnc

Edited by sebkaine
• 1

##### Share on other sites

Thanks Emmanuel,

Thats an interesting read and video! I think generating the curves is the easy part; I found L-systems unintuitive so I spent a couple of hours making a basic tree generator in vex (i've attached an early version) but the tricky part is generating interesting and geometry with clean/smooth joins etc. Thats why I was looking at the above tutorial to see if it can be procedurally modelled without first using curves..

vex_tree_v1.hip

##### Share on other sites

to generate great and clean mesh i think openVDB could be the Light ...

- you generate particles,

- from those particles you generate curves

- you add a layer to tweak/clean those curves in SOP

- from those curve you generate a volumetric object

- you sculpt the detail in volume

- then you build a mesh with openVDB with Volume->Mesh Object

i've never done trees but it could be a possibility for investigation ...

ps : cool and interesting stuff in your hip thanks !

Edited by sebkaine

##### Share on other sites

Yea I was thinking about that but I don't have a huge amount of experience with openVDB. I'll look into it more now though. Thanks for your help!

Ha no worries, I just found it a lot more intuitive to write something like that than using L-systems, with some work it could probably be quite useful.

##### Share on other sites

It's a bit harder to get nice meaningful uv flow the volume route, but for sure it would be a nice way to get interesting shapes.

##### Share on other sites

openVDB is the light , it is just a killing features of Houdini, just for this feature it is impossible for me to go back to maya !

The sooner you learn it ! the better !

i think that you are making a confusion beetween L-System and Recursive System

L-System are PITA to use if you're not a math genius , But particle approach is imo the most efficient because if you devise it cleverly you can

generate a raw tree with very precise control then tweak all in SOP. With particles you also have age and degree of birth (L0, L1, L2, L3)

and thus you can store those info to use them to remap your pscale and the force of the noise you apply to disturb your branch.

VEX is also cool but i am not sure it will be as efficient as using POP.

Other alternative when you are lazy ...

http://www.onyxtree.com/

@eetu

yes i haven't think about uv's ... good point ! ... PTEX ?

Edited by sebkaine

##### Share on other sites

Hi,

for UV you can generate tube along the curves, then "smooth" intersection branches with vdb (power) closestPoint.

Next just find some way to Alpha blending the overlaping face.

See my file,

Have fun

vdb_tree_CLP.rar

• 1

##### Share on other sites

just going to butt into this thread and ask if anyone has a (reasonably) procedural way of generating a curve from a branch...like a line down the center...

##### Share on other sites

Michael could you be more explicit with a drawing/image or an exmple ? i don't get exactly what you want ?

I am trying to find a set of video where a guy use some procedural cell development algo.

Recursivity is interesting but it produce chaos if you don't control the expension.

So you have to add some sort of flocking behavior law to

- avoid collision

- keep coherence in the growing process

I am sure someone here has already see this kind of stuff where the cell propagate like an intelligent organism.

they split after a certain amount of time without touching each other and by keeping a velocity that go outward.

I think they use something like this in V-gro tools

Edited by sebkaine

##### Share on other sites

There's also a simple setup in the archaeological layers of my lab thread, http://forums.odforce.net/topic/8471-eetus-lab/?p=56274

I even found the hip file attached. It's from H9.5 so the feedback is done with a finicky file save-load setup, of course a Solver SOP would be better these days..

ee_aodla_05.hip

• 1

##### Share on other sites
Michael could you be more explicit with a drawing/image or an exmple ? i don't get exactly what you want ?

Hi Seb,

Originally I was just wondering if there was a way to do this step procedurally in this tutorial (http://www.andyboyd3d.com/siggraph_talk/img32.html). For that (simple) example I wouldn't have to worry about collision or avoidance as I could generate branches sufficiently far away and grow them mostly along the normal of the trunk with some noise so they should never collide. So its a procedural modelling question. It just means this way I should be able to get an interesting, homogeneous mesh with whilst retaining good UVs. The stuff you listed with intelligent behaviour would definitely be more interesting though!

Michael, I was wondering this too. I guess it would be some kind of 3D straight skeleton?

Thanks for all the help!

Mike

##### Share on other sites

yeah, it's to opposite of generating a tube with a curve...you have a tube but want to generate a curve that runs down the center...

if you're building a tree yourself you'll likely start with a curve and generate a branch from there, but if you already have a tree and want to say, add some wire deformation to a branch, it would be helpful to be able to get a curve that follows the branch...

## Create an account

Register a new account