Awesome, reminds me of Tree Magik (and Plant Life) by The Game Creators way back when A couple of ideas: - separate radial segment setting for branches (ez polycount reduction) - add colors attribute to vertices to bake in path distance from trunk and leaf distance from branch for wind shaders - stylized normals option, instead of standard normals pointing out from the front face, often foliage will use normal baseds on a sphere or hemisphere to achieve a softer look, this one is more of a preference where you just want to see both side-by-side and pick per project (maybe this is just the leaves though? It's been awhile since I've messed with it)
About normals - there is a talk from horizons zero dawn graphics programmer and presentation mentions that normals (for leaves only) are based on isosurface of the tree but he barely mentioned it in the talk itself. I spent like 4 hours researching how to generate isosurfaces and got completely nowhere(
Really cool work man! Ive been working on my own tree generator using lsystems for some time now and while researching various questions I had about it, came across a lot of different procedural tree generators and all of them(except one) had the same problem(? My opinion, maybe be wrong) - the branches are too curved. You rarely see trees that have those smooth branches and it kinda hurts the overall look of the tree. Maybe I ll get to your asset and try to tweak it a bit see how it looks with less smoothing. Thanks for opensourcing it, will be a valuable resource for other people trying to do the same!
Not just free as in gratis but free as in libre! Very nice work. I think some type of displacement or bump map might help with trunk detail and go a long way towards increasing quality.
@@dangreenheck I think the displacement map looks nicer but it also increases the poly count, no? I wonder how things will fare if you're already hitting maximum poly counts for just some of the basic models.
The additional geometry is generated on demand within the GPU, so I'm not sure! I believe the limits only apply to the vertex buffer passed to the GPU. I'm not 100% sure though, still learning some of this, so I guess I will find out :) I am incorporating another suggestion, however, by reducing the segment count for child branches. This has reduced the poly count significantly so this isn't as much of an issue. I think bump mapping alone will be sufficient, since in reality bark is quite thin and doesn't affect the overall profile of the tree.
@@dangreenheck Awesome! My worry with bump mapping for the bark is that the underlying geometry will still be very noticeable at zoomed in levels. Level of detail reduction for child branches along with some adaptive mesh segmentation might give good enough results, but who knows. Well, I look forward to seeing what you come up with.
Idea for huge optimization: You could decrease the circular segments as they branch: Either with a "segment multiplier", but preferably use 2 parameters: MaxSeg and MinSeg. The main trunk starts with MaxSeg = 12 and each level reduces linearly until MinSeg = 4 for the last branch.
It's probably a huge optimization because 70% of your triangles are on the tiny branches. And they don't require so much details. So it would be smart to make the resolution somewhat proportional to the radius.
Lovely project! The trees generated by this give me some real nostalgia especially with the live demo
Awesome, reminds me of Tree Magik (and Plant Life) by The Game Creators way back when
A couple of ideas:
- separate radial segment setting for branches (ez polycount reduction)
- add colors attribute to vertices to bake in path distance from trunk and leaf distance from branch for wind shaders
- stylized normals option, instead of standard normals pointing out from the front face, often foliage will use normal baseds on a sphere or hemisphere to achieve a softer look, this one is more of a preference where you just want to see both side-by-side and pick per project (maybe this is just the leaves though? It's been awhile since I've messed with it)
About normals - there is a talk from horizons zero dawn graphics programmer and presentation mentions that normals (for leaves only) are based on isosurface of the tree but he barely mentioned it in the talk itself. I spent like 4 hours researching how to generate isosurfaces and got completely nowhere(
Amazng work haha. This is so useful man! Congratulations. Loved the video!!!!!
this is exacty what i dreamt of. Great job.
That's amazing man! Great job!
Really cool work man! Ive been working on my own tree generator using lsystems for some time now and while researching various questions I had about it, came across a lot of different procedural tree generators and all of them(except one) had the same problem(? My opinion, maybe be wrong) - the branches are too curved. You rarely see trees that have those smooth branches and it kinda hurts the overall look of the tree. Maybe I ll get to your asset and try to tweak it a bit see how it looks with less smoothing. Thanks for opensourcing it, will be a valuable resource for other people trying to do the same!
You're Incredible Dan!
Not just free as in gratis but free as in libre! Very nice work.
I think some type of displacement or bump map might help with trunk detail and go a long way towards increasing quality.
I do plan on including this in the next version. I found some good free assets that include these maps.
@@dangreenheck I think the displacement map looks nicer but it also increases the poly count, no? I wonder how things will fare if you're already hitting maximum poly counts for just some of the basic models.
The additional geometry is generated on demand within the GPU, so I'm not sure! I believe the limits only apply to the vertex buffer passed to the GPU. I'm not 100% sure though, still learning some of this, so I guess I will find out :) I am incorporating another suggestion, however, by reducing the segment count for child branches. This has reduced the poly count significantly so this isn't as much of an issue.
I think bump mapping alone will be sufficient, since in reality bark is quite thin and doesn't affect the overall profile of the tree.
@@dangreenheck Awesome!
My worry with bump mapping for the bark is that the underlying geometry will still be very noticeable at zoomed in levels. Level of detail reduction for child branches along with some adaptive mesh segmentation might give good enough results, but who knows.
Well, I look forward to seeing what you come up with.
Amzaing job man, I would love to see mountains generation with roads and trees on it :)
awesome work!
Idea for huge optimization:
You could decrease the circular segments as they branch:
Either with a "segment multiplier", but preferably use 2 parameters: MaxSeg and MinSeg.
The main trunk starts with MaxSeg = 12 and each level reduces linearly until MinSeg = 4 for the last branch.
It's probably a huge optimization because 70% of your triangles are on the tiny branches. And they don't require so much details. So it would be smart to make the resolution somewhat proportional to the radius.
Great suggestion. There was another comment that suggested this as well. I will definitely implement this.
Super cool, thank you for sharing this project. I think he will be able to help us develop incredible things. thanks again🌴🌵
I just use cubes for everything, maybe a cylinder or a plane.
It is programmer art!
Also, if you want to continue with your procedural generator... implement L-systems!
Can we have a playlist for this project?
I don’t have any plans currently to do a deep dive on this. The code is a bit too complex/mathematical for me to cover in a video.
@@dangreenheck I understand. I actually meant something like a big playlist for this project
Great work, none the less
I get a white screen, when opening the Live Demo Link
I understand nothing, but its fun to watch lol