Jump to content

Vegetation Tool


Bob

Recommended Posts

Hello everyone,

I am working on a tool to output variations of plant assets for use in a real-time game engine.

My general approach is to create a dynamic line skeleton in l-system language, distribute leaf/twig planes with a copy node and create the volume of branches. Vertex colors are also applied for ingame wind-animation.

The available polywire does not fulfill my needs and so I am trying to create something similar.

What does it need to do in addition to polywire functionality:

1. Twist according to/along with l-system turtle normal/up vector

2. Merge/Blend branch pairs where they meet -even after resampling the incoming curve (my way to reduce polycount, especially towards the ends of the branches)

3. Output useable UVs, one unfold and relaxed cylinder (one seam) per branch.

4. Adjust shape of the trunk (bulges at the base or better strength over length). I have done this before and would like to loft circles to nurbs surfaces, which should give proper UVs,too. The main problem here is that when I want to reduce the divisions over the length (using $WIDTH value), the polygon output looks wrong whatever node I use. Polywire does this task very well.

Attached is what I have so far.

Another functionality I want to implement is proper vertex color distribution. In the Unreal Development Kit I am multiplying the wind vector with the red channel of the vertex color. Along the l-system the cd should grow from black to a maximum red value of X at the branch tips (I guess using the $arc value. This needs to be applied to the polygonal geometry later, of course. The leaf planes need a gradient that goes from the red value of the branch they grow from to 255(max). This should be doable but first I need to solve the branch geometry problem.

preview.jpg

I hope somebody has ideas, for I am stuck at many fronts here trying all kinds of solutions for a long time already.

I left the scale reference mesh and a rockTool in the scene, in case you're interested.

Thanks in advance!

Bodo

vegetationTool_bodoschuetze.zip

  • Like 1
Link to comment
Share on other sites

Here's another solution for Twisting, lobing and diameter over total length for the trunk -as well as an approach of nesting more than two l-systems. The sticky notes inside the file have more questions.

I am a little tired of trial and error since weeks. Tools like growFX for 3ds max do all I need for around 260€ so I think I have to give in for the sake of productivity. I would love to see something like this in Houdini though .I guess I lack the skills to do it on my own.

However, I'm posting this in hope to find someone who is willing to give it a shot.

trunks.jpg

Greets, Bodo

TrunkTest.hip

Edited by Bob
Link to comment
Share on other sites

hi ,

havent yet touched the Lsystems of houdini , but regarding the question on 'sticky5' note :

is there a way to NOT have the delete node delete the point normal information of everything?

yes , you can 'protect' normals .

in your file TrunkTest i used and Add SOP ; > delete geometry but keep points

and later rebuilt the geometry using 'Polygon' tab of same add node .

so , delete9 and attribcopy3 were unnecessary ..

--

back on topic : maybe you can skip the Lsystem way and try to work more with conventional nodes .

maybe a year ago i started doing something similar ( a TreeDA ) in my free time .

from what i remember it was doable , at least for my future needs .

it was mostly intended to be used for designing / modeling trees one by one ( artist friendly with many viewport controls ) ,

but im sure that could had been possible to make it totally procedural too ( generate multiple-versions-automatically ) .

.goodluck !

edit Reason : my English =P

Edited by zarti
Link to comment
Share on other sites

Thanks for the AddSOP idea, Zarti.

Perhaps I should try the tool without l-systems. But the creation of the underlying skeleton is not my main issue -it is the creation and control of the mesh around it.

Best, Bodo

Link to comment
Share on other sites

my idea then , was to build branches using as their base random polygons from the trunk .

once selected , there are different ways to build branches ; copy , polyextrude , sweep , etcetera ., .

the Sweep node was my preferred ' method ' .

..

starting from existing polygons has a big advantage ; you will never fail to perfectly join trunk with branches .

( theoretically ) with some experimentation , even UVs might ' run ' smoothly too .

.hope this helps too !

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...