S. Krezel - Dynamic Tree & Plant Generator

VIDEO PREVIEW

This tool allows for fast and easy generation of dynamic trees & plants with intuitive drag & drop workflow and many generation parameters.

DISCORD SERVER (SUPPORT, DISCUSSION)

Full feature list

REVIEWS, QUESTIONS & ANSWERS (from UE Marketplace)

The project comes with documentation levels that explain all the features.

Important: Each generated tree is a unique Actor - it allows for a great variety and all the dynamic features, but limits the usage to small/medium areas, or less dense forests. For larger areas, check Interactive Tree Creator.

Latest update (UE 4.21+):

  • Vastly improved generation speed & runtime performance

  • Optimized vert count for default modular trunk & branch meshes

  • Improved default leaf materials

  • Improved liana placement options & behavior

  • Improved wind, force reaction & fall (from chopping) animations

  • Smoother wind direction/strength transitions

  • Better chopping location detection

  • 2 new tree presets

  • Fixed plant interaction detection, now it detects all collision-enabled objects properly.

  • Improved asset naming & folder structure

... Before updating from 4.20 or older versions, please backup your project. 

This is a major update that overhauls some of the blueprint logic for tree generation, wind & force reaction, liana placement, and more.

Previous update (UE 4.20+):

  • Improved generation speed & runtime optimization

  • Improved auto billboard generation

  • ForestMaker: Added possibility to prevent spawning trees/plants on objects marked with a specified tag

  • Added new exposed parameters for tree & plant generators

  • Improved & simplified FORM creation process

  • Cleaned up blueprint logic & Details panel, improved comments and node organization

  • Updated documentation maps

  • Improved default values to provide better results out of the box

  • Fixed tree-chopping physics after the previous UE physics engine update

Dynamic Tree & Plant Generator on Orbital Market

AVAILABLE ON MARKETPLACE

This tool allows for fast and easy generation of random dynamic trees & plants with intuitive drag & drop workflow.

Easy & fast generation:

• Easy drag & drop generation of trees & plants with many customizable parameters
• You can ‘lock’ any tree section to prevent it from regenerating (trunk/branches/fruits), create your own generation presets or save generated trees to a separate blueprint
• ‘FORM’ system: You can create your own trunk/branch shapes by hand (by controlling spline points) and then use them within any tree, with desired amount
• Possibility to use your own meshes/materials with the generator
• Bunch of ready-to-go tree & plant presets (with possibility to create your own)
• Included 20 starter bark materials, 40 leaf/plant materials and a bunch of example fruits, branch variations & trunk mesh sections.

Interactive trees & plants:

• Shockwave reaction: Trees & plants can react to external forces, taking impulse location, strength & distance into account
• Dynamic wind: Wind can be changed by rotating WindZone arrow (in editor) or dynamically (in game) with desired direction, speed & strength.
• Fruits: Trees can grow fruits with desired amount, scale and type of fruit. Fruits can randomly fall down after receiving specified amount of force.
• Dynamic lianas/vines: You can easily connect two branches with a configurable vine that will also follow any tree animation and react accordingly.

Tree chopping:

• All generated trees can be chopped down at desired trunk location.
• Chopped trees will fall down with physics simulation
• Leaf shake effect will play upon ground impact
• Fruits can fall down after ground impact
• Any attached lianas will follow chopped tree parts, retaining their physics simulation
• Chopped tree parts are spawned as a special blueprint that can be picked up by clicking on it - an example is available in the ‘Documentation_Chopping’ level
• You can specify chopped trunk texture for every bark material (9 default textures included)

Optimization:

• Automatic billboard generation: Every generated tree will automatically generate its billboard version
• Dynamic billboards: Billboards will periodically refresh in-game to match current [Camera <—> Tree] perspective. This allows for smoother [Tree <—> Billboard] transitions and accurate representation of distant trees. They can also perform a simple wind animation with desired intensity, to simulate wind even on distant billboard trees
• Distance culling system for plants, tree animation, etc. [with controllable parameters]
• Very fast tree generation & minimized drawcall count by using ‘FORMS’ (More in the documentation levels) instead of spline meshes
• Animation based on GPU – sets parameters via blueprints, performs animation logic in material
• Possibility to set animation FPS (Frames Per Second) value for every tree
• Automatic animation FPS optimization: The closer to camera, the more animation FPS. (Distance variable is exposed to allow you to tweak the strength of this optimization effect)

Other:

• Godrays: Every tree can generate godrays (lightshafts) with desired amount & size. Direction & color is automatically picked from current Directional Light. It’s also possible to update godray direction in game, based on current light direction
• Possibility to assign a ‘ground’ texture for every tree – it will blend between bark & ground texture on stump model to smooth out harsh mesh intersection
• Trees naturally align themselves to any surface
• Possibility to assign custom curves for tree wind/impulse animation (this way you can change the look of trunk/branch animation and customize it to your liking)
• When creating a plant, you can set desired color of any plant element and hand-edit plant shape using splines.
• ForestMaker actor: Forest generator with adjustable settings like min. between-trees-distance, max slope tolerance and more… It can be used to easily populate large area with desired set of trees & plants.

The project comes with documentation levels that explain all the features.
The system is made entirely in Blueprints.

This looks exactly what I needed for my project, but I have one question: is there only 1 type of leaves per tree?

[QUOTE=BardicKnowledge;449314]
This looks exactly what I needed for my project, but I have one question: is there only 1 type of leaves per tree?
[/QUOTE]

Edit: You can select any leaf type for any tree (I’ve posted an example in my post below) - the tool already has 20 different leaf types, and you can always add your own. You can also create your own tree preset and combine any bark texture/leaf type/(other parameters) there.
Thank you!

Great stuff! Will be very helpfull especially for level designers.

[QUOTE=Slavq;449331]
For now it’s possible to add more after editing one of the blueprints, but I see how this could be useful - possibility to add many leaf types on one tree, out of the box, will be added in the next update.
Thank you!
[/QUOTE]

That’s great to know, cause I need a lot of outlandish vegetation, but having the same leaves over and over would make them all look too similiar.

[QUOTE=BardicKnowledge;449433]
That’s great to know, cause I need a lot of outlandish vegetation, but having the same leaves over and over would make them all look too similiar.
[/QUOTE]

I’m not sure if I understood you correctly before, do you need to have e.g. two different types of leaves growing on ONE tree?
If you want to break repetition, you can always change leaf type on any of your trees, to any leaf type you want. Here’s an example, the same tree preset with different leaf types:

In nature, one tree usually grows only one type of leaves - but I’ll add a possibilty to override this :slight_smile:

@AlFlakky Thank you!

Very interesting Asset Slavq, I liked!. For sure I’ll buy it when I go to get my next payment, soom. Is a very good asset, thanks.

[QUOTE=Slavq;449459]
I’m not sure if I understood you correctly before, do you need to have e.g. two different types of leaves growing on ONE tree?
If you want to break repetition, you can always change leaf type on any of your trees, to any leaf type you want. Here’s an example, the same tree preset with different leaf types:

In nature, one tree usually grows only one type of leaves - but as I said, I’ll add a possibilty to override this :slight_smile:

@AlFlakky Thank you!
[/QUOTE]

Oh yes I didn’t mean different leaves on the same tree, I just wanted to know if there was just one type of leaves or more.

Anyway what’s the performance hit using this system? Can you make a forest on a landscape or it will kill the frame rate?

That looks cool,gj :wink:

I am quite curious to the amount of drawcalls per decent tree/plant.

[QUOTE=BardicKnowledge;449969]
Oh yes I didn’t mean different leaves on the same tree, I just wanted to know if there was just one type of leaves or more.
[/QUOTE]

Sure, I’ve edited my first answer to your question :slight_smile:

[QUOTE=BardicKnowledge;449969]
Anyway what’s the performance hit using this system? Can you make a forest on a landscape or it will kill the frame rate?
[/QUOTE]

[QUOTE=;450135]
I am quite curious to the amount of drawcalls per decent tree/plant.
[/QUOTE]

With isometric/top down view performance hit is barely noticeable, but of course forests are usually an FPS killers in FPP games - so I’ve tested it from FPP perspective:
I’ve just created a quite dense, large forest on a planar landscape (so all the trees on horizon are visible, not covered by any hill). It runs from ~45 to 60+ FPS (depending on where player is looking) with Epic quality settings, full dynamic lighting & 1080p - on i5 3570K, 8 GB RAM and GTX 760.
FRESH INFO from the Big Update: Same scene now runs at 80-90 FPS with dynamic billboards turned on.

The tool was originally designed for more top-down/isometric games, hence most of the optimization went into reducing overdraw (e.g. each leaf type has individually cut mesh shape, it significantly increased performance - I’ve attached an example below)

About exact amount of drawcalls, I’ll check this with single tree today and let you know what’s the average value. I assume that it for sure generates more drawcalls than regular static mesh, due to its dynamic features - each single tree always remains adjustable, so e.g. every branch is a separate component. I suspect that most of the drawcalls will come from large amount of spline static mesh components, because they can’t be instantiated.

Update: Waiting for Merge Actors tool to be fixed: Merge Actors: 2 bugs - Programming & Scripting - Epic Developer Community Forums

  • This will allow to convert any generated tree into a regular static mesh.

@macoll & @lunyBunny Thanks! :slight_smile:

[QUOTE=Slavq;450205]

About exact amount of drawcalls, I’ll check this with single tree today and let you know what’s the average value. I assume that it for sure generates more drawcalls than regular static mesh, due to its dynamic features - each single tree always remains adjustable, so e.g. every branch is a separate component. I suspect that most of the drawcalls will come from large amount of spline static mesh components, because they can’t be instantiated.

Thanks! :slight_smile:
[/QUOTE]

Go to editor prefs > Experimental, enable actor merging.
Then select your actors (your spline based awesomeness)
go to window > Merge actors

Now your spline based thingy is just one static mesh, ready to be placed around multiple times.

Might be interesting once its out of experimental, to show how to do it. might be a big selling point later on!

[QUOTE=;450265]
Go to editor prefs > Experimental, enable actor merging.
Then select your actors (your spline based awesomeness)
go to window > Merge actors

Now your spline based thingy is just one static mesh, ready to be placed around multiple times.

Might be interesting once its out of experimental, to show how to do it. might be a big selling point later on!
[/QUOTE]

Thanks, I saw this feature yesterday on Twitch stream and already tried it, but for now it stretches all spline mesh components of merged trees in many weird positions + most of the tree parts disappear completely. I’ll be trying to get it working though, because indeed it’s really worth it. I’m on 4.10 now, maybe the finished version (after experimental phase) will be better. If I’ll be able to get this working, I’ll certainly post some info here.

I’ll be rooting for you :slight_smile:

— BREAKING NEWS — The ‘Big Update’ is ready and should appear soon. List of included new features:

  • Automatic Billboard Generation: Every generated tree will automatically generate its billboard version + crop their billboard texture plane to match its bounds and minimize overdraw.
  • Dynamic Billboards: Billboards will periodically refresh in-game to match current [Camera <—> Tree] perspective. This allows smoother [Tree <—> Billboard] transitions and accurate representation of distant trees.
  • Distance culling system for plants, tree animation & collision, leaf material complexity, etc. [with controllable parameters]
  • Tree growth stages: Every tree automatically generates its own growth stages that can be switched dynamically in-game. From a seedling to fully grown tree!
  • New ‘ForestMaker’ actor: Forest generator with adjustable settings like min. between-trees-distance, max slope tolerance and more… + Naturally aligns trees to any uneven terrain.
  • Plants will react to any objects passing near them.
  • Godrays (lightshafts) generation matching current light direction or with fixed rotation.
  • Trees naturally align themselves to any surface.
  • New ‘Impulse’ actor feature: Possibility to change shockwave speed to achieve better effect (the further from impulse source, the later a tree/plant will react to it)
  • Branches can be automatically scaled to be thicker/thinner depending on their grow height, with adjustable scale factor.
  • New “Animate Branch Wind” switch.
  • Significant performance optimization feature for tree animation - culling based on camera frustum, with 3 adjustable variables in ‘WindZone’ actor.
  • Possibility to add randomized leaf scale variation.
  • Tidy-up of internal blueprints (to make it more clear for people who want to delve deep into the generator system)
  • Many performance optimizations & blueprint logic fixes.

I’m creating a video with all the new features right now. I’ll upload it here when I’m done.

@slavq
Your plugin is on my “to buy” list. I don’t see trees with lot of leaves, i mean covered with leaves on the upper part, do you have some example test ?

[QUOTE=Galeon;478352]
@slavq
Your plugin is on my “to buy” list. I don’t see trees with lot of leaves, i mean covered with leaves on the upper part, do you have some example test ?
[/QUOTE]

Here, I’ve quickly made an upper-leafy tree + Shader Complexity view if you’re curious: (You can see these individually-cut-minimizing-overdraw leaf planes in action)

Of course you can add as many leaf-branches as you want, increasing leaf density even more - the generator allows to create almost any tree type (more in the first video). + The good thing is that obviously once it switches to billboard version, then any increased shader complexity coming from very dense leaves will disappear, since it’ll be a simple plane with a texture :slight_smile:

[QUOTE=Slavq;448991]
• Possibility to add your own meshes/materials
[/QUOTE]

Does this mean i could add my own tree meshes?

[QUOTE=unit23;478401]
Does this mean i could add my own tree meshes?
[/QUOTE]

I’ll try to explain it on an example: Trees are generated using random trunk sections, plants are generated using specified meshes for leaves/blossoms/etc. You can always add your own meshes - if you want to create a plant with a butterfly sitting on top :slight_smile: then you just import your butterfly mesh, add it into plant generator as a plant element. For trees, there are trunk sections with hollows and bulges that appear randomly. If you want to have a trunk secion with a see-through hole, you can add a mesh like this into the generator and it will appear randomly when generating a tree.
Same for materials, if you have some special leaf texture, you can add it and tree will generate using it. You can also add any tileable texture as a bark material. So e.g. if you want a tree with tileable kittens texture on trunk (because why not :slight_smile: ), just add it as a material and specify to use this material when generating a tree. Bark materials also have separate moss textures that appear always on top of surface - you can add a snow texture instead of one of moss textures and then you have a tree covered in snow… And so on.