Designing vegetation workflows

In response to above ^^^^

I took a quick look through the GDC talk and get the gist. I can see the benefits of that workflow versus making individual foliage models in speedtree.

But a big, expensive team designed this workflow. Could anybody besides a big, expensive team feasibly design an entire foliage pipeline and that be more cost-effective than just doing things the manual way? (e.g., just to get fbx exporter from speedtree is $1,000 alone).
Supposing your game has forest similar in scope to horizon game.

Just curious! I’ll probably be doing some more forest in the future and would love to see if other indies have found some better methods compared to > make foliage assets in procedural generation app > send to engine > make instanced static meshes.

Funny that you should mention this because that was my memory too, but then I checked the website while typing up a post for that thread (that ultimately wasn’t posted because @hippocoder wanted to remove the tangent) and discovered that the $19/mo tier now includes exporting too.

https://store.speedtree.com/buy-try/

2 Likes

Holy cow, thanks for sharing that. That is really great news for me.

I’ll also add an update because I think maybe there is not clear question in original post:

@hippocoder , can you elaborate what you mean “kibash” regarding vegetation? Do you mean that you make a few leaf cards, a few branches, a few trunks, and then artist manually just create a variety of foliage from those pieces?

If that is the case, other than tech artist having more control of the overall pipeline, is there any benefit versus using speedtree or similar?

I know some people aren’t fond of the procedural foliage generators but I got to say once you get past the learning curve it must be 1000% faster than any other method I have tried or can imagine.

Yo, yeah… from the other thread:

Basically around 38 mins in they talk about how they build the lowest detail LOD first, out of cards and simple geo. Then for each additional LOD, more detail is added, so they start with the best low poly version (not counting billboard, which is generated) and just add more stuff.

I found I could stop basically, at the lowest detail LOD. I didn’t need more detail. But if I do, I simply will add more cards. This way, I control it and if I want funny branch X I can have it. It would take a long time with a lot of sliders to do such simple decisions.

None of this is all or nothing or exactly like how they do it. It’s perfectly OK to buy a few trees, rip the textures for canopy etc and use them on your own kitbashed models.

In my case I have a whole modelling package in Unity that does what I want. It includes Mudbun and Simplygon, tooled how I require with my own code.

I also have a few editor Utilities so I can make a gameobject and kitbash it together, the Utility will combine these meshes and calculate their falloff for branches etc.

I have used speedtree modeller and also MTree but both were basically me fooling around for an hour and then realising that hour’s fooling around is about 10 mins modelling for me. I don’t need more than 10 tree types or a handful of grass types. Plants will probably be the same, haven’t looked into them but it’s not a big deal once you have a few pieces and some utility code to combine children.

2 Likes

ah gotcha. That gives me a better idea. I wonder though if at the time you were messing with speedtree the art director tools were available in it? I think they are pretty new. Basically allows you to move elements the same way you would ina modeling app. Saves a lot of time when you just want to make a small tweak for silhouettes sake.

Anyway just wanted to ask because always on the lookout for better workflow for this sort of thing, thanks for info.

I would like to point that making a basic tree creator is quick and NOT that hard either, the automatic kitbash algorithm is basically just:

  1. keep track of depth
  2. spawn children within an area, at some orientation, according to the current part logic
  3. goto 1 for each children by adding 1 to depth

The spawning of children is basically from a list of what’s required, it’s either “null” objects that will spawn other children (think city spawning house, the house is made from children like wall and roof, door, but isn’t tangible as itself), or assets that visualize the shape and nature of the part.
You use a simple logic to know what and where to spawn (generally just a random from multiple part, or the same part multiple time, or any combination of that).
Depth is an input for recurrent part (like branch in a tree, you might switch the spawning logic after n to get fruits or leaves). You probably don’t need over depth 3 (from 0) in most case.
> With spawning within an area being just a bunch of lerps :

  • 0 for points
  • 1 for a line
  • 2 for a surface
  • 3 for a volume (basically along “axis maximum”).

Also you can bake the result in a single instance to avoid objects multiplication (or generate directly inside a single “asset”, like adding the vertices directly to a mesh).

There is a lot of algorithm about tree creation, and most of them are over complicated, or add extra considerations, that’s tangential to the core basics, to generate each part (leaves structure, bark texture, root shapes, space colonisation). You don’t need them for a simple case, just do them by hand, that’s where dedicated tree generation tools become relevant. BUT it does help that some botanic books have a very detail description that map easily to that simple logic or any procedural logic (google leaf type for example), if you want to go there.

This algorithm works for any hierarchical (ie a simple landscape.city lay out) or tree like objects (that’s a huge class of objects when you think about it, animal are part of it).

Just pointing that, just in case, because many of these stuff looks more complex than they are really are, and I know people see something that looks complex and think it is complex.

Personally I had to go through so many phony and ill explained L-system algorithm that are just a sham, because I needed something that actually generate with gameplay metrics (like having branch starting ABOVE the character height to not break navigation, or make climbing easier) not just pretty visual.

3 Likes

Well there is always a new app or a new subscription, but for the amount of trees I need - I may as well just clearly design them and make them. It’s not that hard. I doubt I want the memory pressure of too many tree types.

1 Like