🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Procedural tree generator tool - we'd love some feedback from you!

Started by
10 comments, last by EdKeens 8 years, 8 months ago

Hi fellow game developers!

We're three students from Europe, and we're at the moment seriously considering creating 3D tree modeling tool.
But instead of modeling, all the tree models are already there, generated procedurally.
Since what you need are trees and not a process of modeling trees why waste time modeling them.

Let's say you need a tree model for your neat game or your animated film or anything.
Imagine starting up our program and instead of being met with a complicated UI foretelling hours of laborious tree modeling, you're in a forest.
You look around and every tree around you is unique, every tree is there for you to export as a 3D model. Very simple. You walk around and you soon find out that
this is no ordinary forest, but forest where vast amount of different trees grows in one place.

If you have some particular tree in mind, you can zoom out and browse through large amount of trees fast, filtering the ones you may want.
Obvious limitation is you wouldn't be able to get very specific and unique tree you have in mind.
But other than that, it's possible to generate pretty wide spectrum of tree types.

We have finished the first prototype, here is a screenshot and album that show how it looks so far:

WUDiWPp.png

There are many more screeenshots on an imgur album:

http://imgur.com/a/dpNVS

What this all means is:

  • you can get good looking 3D tree models without any modelling skill whatsoever in a few minutes
  • you can select from basically infinite amount of trees
  • you can export basically infinite amount of trees
  • if you don't need trees, you can just go for a walk in a tranquil and pleasant environment

What we'd like to know is from you, potential users, if this is a worthwhile endeavor.
How does it sound? Would this kind of program make your job easier and more pleasant?
What would you expect feature-wise of such program? Any suggestion is welcome.

Thanks!

Advertisement
They look great from a distance, but how to they look close up? If I were standing at the base of the tree, looking up through the foliage, how would it look?

Is this an actual tree generator or is it (like pretty much every "tree" generator i've seen) just a "trunk" generator? Are the leaves textures or are they generated to? Can you go from 0 textured / artist produced data to a full blown tree (including not using any textures shipped with the software)?

I'd love it if so, else it's already been done and very well so in commercial products so i'm not sure there's much market for more of it.

What would you expect feature-wise of such program?

* Ability to extend it with new tree types -- e.g. "teach" the program how to grown an Australian or Siberian forest.
* Good LOD generation.
* Animatable meshes -- e.g. extra vertex attribes such as branch thickness and distance from trunk, to use in procedural animation.
* A straightforward / well-defined data format that allows people to convert tree data to any engine.

... and we're at the moment seriously considering creating 3D tree modeling tool. But instead of modeling, all the tree models are already there, generated procedurally.



I never liked the idea of modeling individual trees. There are already plenty of tools to generate tree models, tree meshes, tree billboards, and more. There is rarely a need for a specific tree model.

My first exposure to procedural tree generators was about 20 years ago. There are lots of them out there. I've seen studios using SpeedTree since about 2006 (but it was out before then), it seems to be a popular product.

It seems every engine has procedural tree generators these days, seamlessly built into their terrain engines.

What can you provide that others do not?


What would you expect feature-wise of such program? Any suggestion is welcome.



As Hodgman mentions, there are must-haves. These features already present in major engines are:

* New tree types. I should be able to plug in any structure of branches, twigs, and leaves, specifying frequency, length ranges, and other variables. I expect to plug in any textures I want.
* Good LOD. If I am standing directly before the tree I expect a complex and detailed object with several hundred verts. As I travel away I expect smooth LOD transitions. When I am looking out over the forest, I expect billboards.
* Animatable. I expect blowing in the wind ranging from subtle motion to whipping around in a tornado.
* Interactive. I expect an option (coupled with animation above) to collide with the tree and branches and leaves as a physics object.
* Fully integrated with the system. Shadows, pathfinding integration, persistence, etc.
* Scalable. I expect to build a lone tree, I expect to build a grove of trees, I expect to build dense forests where no two trees are identical.
* Tiny footprint. I expect generated trees to only require a few bytes to store, such as that tree's RNG seed number.
* Customization of individual trees. I should be able to specify parameters for a specific tree to get a specific look (you mentioned as "obviously" not possible.

All of these features are already part of the terrain system in Unity, and Unreal Engine leverages SpeedTree.

If you are planning any kind of serious endeavor, you'll need to match or beat this behavior, or find a way to integrate with that existing behavior.



What we'd like to know is from you, potential users, if this is a worthwhile endeavor. How does it sound? Would this kind of program make your job easier and more pleasant?


It doesn't sound appealing to me as a stand alone system.

Game engines rarely use individual tree models, built procedurally in a separate tool but then converted into expensive meshes and model. They store the parameters, not the full models.

If you were building a replacement for SpeedTree it might be interesting, but you've got a lot of catching up to do.

If you were building an editor that is better than the ones found in SpeedTree or Unity, something that stores data in a format either can use, you've also got a lot of catching up to do.

If you are building a commercial product, you've got a lot of catching up to do with the current products.

We're three students from Europe


But if you are building a learning project for your own education, enjoy it.

Thanks all for providing feedback! We've talked about it for few hours and we've decided we'll continue with the project. Our goal won't be to take down SpeedTree, but to provide cheap(probably free) and much easier and more comfortable to use alternative, focused mainly on game developers.

They look great from a distance, but how to they look close up? If I were standing at the base of the tree, looking up through the foliage, how would it look?

The bark looks very shitty right now, so it looks shitty. That's something we're working on :)

Is this an actual tree generator or is it (like pretty much every "tree" generator i've seen) just a "trunk" generator? Are the leaves textures or are they generated to? Can you go from 0 textured / artist produced data to a full blown tree (including not using any textures shipped with the software)?

I'd love it if so, else it's already been done and very well so in commercial products so i'm not sure there's much market for more of it.

I'm not sure what you mean - do you mean to ask whether leaf textures are procedurally generated? If so, the asnwer is that momentarily no they're not, but it is something we seriously consider.

What would you expect feature-wise of such program?

* Ability to extend it with new tree types -- e.g. "teach" the program how to grown an Australian or Siberian forest.
* Good LOD generation.
* Animatable meshes -- e.g. extra vertex attribes such as branch thickness and distance from trunk, to use in procedural animation.
* A straightforward / well-defined data format that allows people to convert tree data to any engine.

Thanks! That was very valuable to us.

... and we're at the moment seriously considering creating 3D tree modeling tool. But instead of modeling, all the tree models are already there, generated procedurally.



I never liked the idea of modeling individual trees. There are already plenty of tools to generate tree models, tree meshes, tree billboards, and more. There is rarely a need for a specific tree model.

My first exposure to procedural tree generators was about 20 years ago. There are lots of them out there. I've seen studios using SpeedTree since about 2006 (but it was out before then), it seems to be a popular product.

....

Thank you, really. You've obviously put some time into that and your feedback really made us talk about direction project will be heading. It's staggering to us we got this kind of feedback for free. Thank you once more, we all appreciate it.


I'm not sure what you mean - do you mean to ask whether leaf textures are procedurally generated? If so, the asnwer is that momentarily no they're not, but it is something we seriously consider.

Yes that's what i mean, i'd be interested in something that fully procedurally generates a whole tree, not just the base shape, that is 0 built-in textures / geometry, just a way to define rules and leaves being generated just as much as the rest.


I'm not sure what you mean - do you mean to ask whether leaf textures are procedurally generated? If so, the asnwer is that momentarily no they're not, but it is something we seriously consider.

Yes that's what i mean, i'd be interested in something that fully procedurally generates a whole tree, not just the base shape, that is 0 built-in textures / geometry, just a way to define rules and leaves being generated just as much as the rest.

Yeah, that's what we'd like to do. We already have a system for procedural generation of tree bark. We didn't start with leaves yet, but I already looked at possible algorithms. Generating leaf texture seems pretty reasonable, but leaf geometry is a bit tricky.

Anyways, having everything procedurally generated is definitely something that would fit very well into our concept and unless there are some serious obstacles, it is something we will work towards.


Generating leaf texture seems pretty reasonable, but leaf geometry is a bit tricky.

Have you looked at SpeedTree, at Unity, and at other systems to see how they do it?

Foliage is usually textures with a a lot of alpha, not complex geometry.

With rare exceptions you cannot have a lot of geometry on individual trees. If you are getting up close and personal with a tree you might have a need for the details, but otherwise trees are a high-cost investment in games. Complex trees have high costs in lighting and shadowing, especially if you are running self-shadowing processing for moving trees. Trees can dramatically increase vertex count, they can trigger an enormous number of draw calls especially when they use multiple textures or varying shaders.


Generating leaf texture seems pretty reasonable, but leaf geometry is a bit tricky.

Have you looked at SpeedTree, at Unity, and at other systems to see how they do it?

Foliage is usually textures with a a lot of alpha, not complex geometry.

With rare exceptions you cannot have a lot of geometry on individual trees. If you are getting up close and personal with a tree you might have a need for the details, but otherwise trees are a high-cost investment in games. Complex trees have high costs in lighting and shadowing, especially if you are running self-shadowing processing for moving trees. Trees can dramatically increase vertex count, they can trigger an enormous number of draw calls especially when they use multiple textures or varying shaders.

Yeah, I agree. What I was trying to say that generating procedural leaf geometry is tricky, for realtime usage, leaves should definitely be just a quad with a texture on it.

This topic is closed to new replies.

Advertisement