Search Unity

[SALE] InfiniTREE - Procedural tree generation-growth, Multithreaded batching & Forest management

Discussion in 'Works In Progress - Archive' started by nasos_333, Dec 14, 2014.

  1. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    Actually both my tree and grass packs main purpose is to allow very detailed trees close up, but with LODs than billboards. The goal is exactly to have very few super high detail things unbatched or close up at all times.

    What is missing is an automated way to do the LODs and billboards, which is rather hard to automate.

    I hope i can come up with a proper billboarding solution for the last LOD levels both both systems at some point.

    Also another idea would be to create your LOD levels with one of the automated LOD creation assets in the store.
     
  2. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    There is actually an auto LOD tool? i will have a look, but i do not think it can do much with these models as they are ridiculously high poly count.. not sure.. but very interested, and i will keep an eye on your products for future features. Like i mentioned AFS asset looked to be what i needed but i haven't got much feedback on if it could be made to work with my trees.

    I know it'll pop somewhat and very likely kill low end machines.. but i have little choice at this point. Anyway it could be a long while before i have anything to release anyway so by then a 790 card could be old school :p

    I still think like what i saw in the AFS demo, real-time billboards kicking in at not too far away would make these usable perhaps at least for high end machines...
     
  3. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    I just saw the trees, as you said they are extremely detailed and the best way i can picture working in a big environment is by pooling them and moving them around when they are needed and beeing replaced by the billboards or LODs when the hero is away.

    I have this as a plan for my systems, but is so complex that could take months to even evaluate if it is feasible in a streamlined way. What i currently do is destroy the grass when it is very far away from the hero as he moves and recreate it in the other side (same logic will apply in trees in InfiniTREE 2). The pooling would disable the grass instead of destroying it and reuse it for the regrowth of the visible grass instead of instantiating new parts. This is definitly something i plan to do in later versions, but i cant say for sure it will work out yet.

    My current system could batch them and LOD them, in a static way so they dont create in game problem, but the scene would probably take very long to start. Batching in real time would probably not be possible and would create a big spike, so the gradual growth approach is also not possible.

    What i would suggest is use this sparingly, say a few of these in key locations and disable them with a simple distance check and let the other trees cover for their dissapearence.

    Also note that presenting billboards very close will definitly break the illusion a lot, you should use some LODs before the billboard to break the sudden change. For example InfiniTREE could be used to present a LOD of the bark with a few quads with lower end painted on branches and leaves (which can be grabbed by a photo of the tree too in a painting software)

    This is one of the big powers of InfiniTREE, each level of detail can be replaced by custom meshes and pictures for example for the LOD level.
     
    Last edited: Oct 26, 2015
  4. CommunityUS

    CommunityUS

    Joined:
    Sep 2, 2011
    Posts:
    240
    I noticed the sale today. Which in my opinion should be the normal price, $60 on your stuff is hard to do at this stage.

    The only thing left holding me back is, I question how good can I make inifiTrees look? All of the samples and pics I see are programmer art quality. I recommended using some of your vouchers and getting some artists to really work on your system and both give feedback and produce amazing looking trees that you can include in the package or let them resell or you resell or whatever.

    And that also brings up having a lite version which is free, and maybe doesn't include the editor...would allow artists to sell your trees on the asset store and require the free or lite dependency. Win, win. See John Nash and modern economics. (or just watch A Beautiful Mind - movie :)
     
  5. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349






    InfiniTREE 2 and InfiniGRASS, with Sky Master ULTIMATE v3.0 fog and image effects (WIP, placeholder barks for testing)
    The problem with the price and free version is that the system is rather expensive because of the backend that does the multithreaded batching that was very hard to program and was working on it for a very long time.

    This is the backend i will be using on many more packs, so it is a general purpose idea that can do much more than trees.

    The current trees are indeed made with Unity 4 in mind, so i fully plan to create a new spactacular set of trees and shaders for InfiniTREE v2.0, which i will start working on after Sky master 3.0 is submitted (very soon).

    Here is some first tests i did with placeholder barks and proper shadows for the new pine trees (under heavy WIP)


     
  6. CommunityUS

    CommunityUS

    Joined:
    Sep 2, 2011
    Posts:
    240
    I understand trying to get a return on your investment.

    ... if what we are paying the premium for is the multithreading, which is duplicated and reused in each of your assets, how many times must we pay for this. We should only need to help reimburse your time once right?

    Please consider, introducing a collection package. Or offering upgrade discounts if we already purchased another package. Or buy 2 and get a free voucher for the third one. Or all of these.
     
  7. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    I am already doing this, i offered a InfiniGRASS voucher to all users that supported InfiniTREE with a review (including all new reviews). That offer is now over though, but as vouchers come in i will definitly be doing more offers like this.

    Plus i do sales often as well (currently the system is half price).

    Note that the tailoring of the system for each case is also a huge amount of work, that involved making shaders, tailoring the batching for the specific dynamics, providing the specific for each use editors and much more, so you dont pay only for the core system, but also for the tailoring to each use case and all extra features developed constantly.

    The InfiniTREE 2 will offer also next gen shaders, new trees, adaptation of all the vast extra work for grass to move it forward in editor side, new real time branch growth system and many new features.

    Maybe a do a cheaper bundle later and offer an upgrade path from both packs to it, later next year (unfrotunately upgrade can happen only a year after the asset released on the store)
     
    Last edited: Nov 9, 2015
  8. CommunityUS

    CommunityUS

    Joined:
    Sep 2, 2011
    Posts:
    240
    Gotcha, yea this is good. I just checked out your particle solution. Looks powerful. I see 2 bundles sky/gi and particles/gi. That's not what I mean, I am asking for your full product line with an insane discount...that would be what I would buy. Buying one at a time is too expensive at current prices...just a budget issue for me not a value determination.
     
  9. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    I do think of having an overall pack, when i am done with all my base packs, sometime later next year though, as there is three other major systems that i am working on (besides InfiniTREE 2, that is also a major update).

    At that point i may integrate everything and provide some "create a complete world/game" scenarios, for the users of all packs or a bundle.

    Until then, i can only make offers for reviewers of my packs, for example if you get Sky Master ULTIMATE and review the new beta, i have an offer for a free InfiniTREE voucher, or another pack of choice, while vouchers last. I do that for other packs than Sky Master, since i have no vouchers left for the Sky system.

    Just PM me for the offer you would like :), i am always willing to help on lower on budget situations with various such offers.
     
    Last edited: Nov 9, 2015
  10. kilju

    kilju

    Joined:
    Nov 4, 2013
    Posts:
    127
    hi nasos.
    love ur grass system and now looking for tree system :D
    can i use my own trees with this system? i have bought fev tree packs from asset store.
    and i saw u talking about auto lod to work with this asset. so any tip for good autolod system to go with this`?
    would this work https://www.assetstore.unity3d.com/en/#!/content/25366
     
  11. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    Hi,

    My LOD system can receieve any item, so you can grow a tree and take a snapshot with the LOD converter (or some other pack, i use my Toon Effects Maker to do the sprite for example)

    Note that i do not include a billboard shader, so the billboard will have to be a triplane to cover all angles, i plan to have such a shader later. Of course if you have a billboard shader, can be used with the LODed item and look at the camera always.

    Also my LOD modes in L-trees can be used in clever ways to create very nice LOD stages that look 3D, for example in the LOD there can be a replacement for the level 1-2 brances and leaves with planes that have all three included, it is a growth level based system that is very versatile.

    InfiniTREE supports only one LOD stage (but is trivial to program more), InfiniTREE 2 is planned to use 3 LOD stages like InfiniGRASS (also the grass editor and manager systems will be adapted for InfiniTREE as well)
     
  12. kilju

    kilju

    Joined:
    Nov 4, 2013
    Posts:
    127
    thanks for info. im little bit of low on cash right now but later i think i will buy it :) how long are u going to keep it 50% discount?
    i love ur support best developer in unity scene!!!! keep up the good work
     
  13. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    Thanks the kind comments :)

    I will keep the discount until late next week, after popular demand. If you need a bit more let me know, i can extend a bit further as well if needed.
     
    kilju likes this.
  14. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Hi @nasos_333,

    Sorry for the late response, A predefined billboard makes me shudder, I ensure my trees (objects) are always placed with some random rotation and in some cases with a bit of a lean. I think the Unity tree system can't have rotations due to this limitation of a static pre-defined billboard.. which if you ask me is outdated - my trees are not very symmetrical so they look bad when you can easily spot them as the same tree.. rotation is the only way. So that's where AFS sounds like it would be cool, but it only works with Unity trees not arbitrary meshes i think.

    Back to the Problem of LOD, As brought to my attention by @kilju SimpleLOD.. I've asked on that forum to see what he thinks about making LODs for my trees.

    And as for disabling trees and hiding them with other trees, i don't really think i am looking at this point to do dense forests, due to my location choice.. each tree is an important feature.

    Thanks for considering this issue for future projects, I really think directional correct real-time billboards is a must have feature for the future of any tree system in any game engine IMHO, of course LOD is still a must as you say.

    Have you used SimpleLOD on trees kilju?
     
    nasos_333 likes this.
  15. CommunityUS

    CommunityUS

    Joined:
    Sep 2, 2011
    Posts:
    240
    3d billboard imposters is the way I was thinking of going.
     
  16. kilju

    kilju

    Joined:
    Nov 4, 2013
    Posts:
    127
    no i havent. i havent bought infiniteTree yet :) little bit of short on money
    but i think it should work not sure thought.
     
  17. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    I have done a lot of work on vertex positioning lately, so as soon as i am done with the Sky Master 3.0 release next week, i will start working on a billboard system with full control. This will be used in both the trees and grass packs and i will combine it with the other tools to grab the textures etc

    This can be an asset on its own (will of course be free with both grass/tree packs), so it wont be out very soon or trivial to do (plus i am not 100% sure yet i can do it, but i am far more confident than i was before doing the vertex shader rotations decomposition work), but i will persue it to the best of my ability and i hope i will have a nice system to use for the billboaring and LODing
     
  18. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Sounds good, I'm not sure i understand all that you have said, a little technical and i'm not familiar with your current tools actually. But do you mean LOD is something that you are looking at automating with your asset? so my tree at 187,000 tris i think, that procedurally you'll be able to use it and a number of LODs will be created plus perspective billboards? Sound almost too good to be true.. i am close to grabbing that SimpleLOD tool as i have a vehicle that also is mad with separate meshes and will need LOD as well.... but for trees (seen as objects by unity) I'm very interested in anything that can improve things (if you want a tree i have 'prepared' as much as possible for Unity i can send you one for testing purposes) let me know. The main isseu i see is that there quads that are the leaves really have nothing that can be done to them individually, only delete some or perhaps - now this is asking a lot - billboarding the groups of leaves based on perspective!

    See this post of mine for more images of the actual trees I am referring to... http://forum.unity3d.com/threads/xfrog-tree-usage.361650/
     
  19. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    To clarify, I was refering to billboard creation and shaders, not automated LOD levels for the meshes. There are other tools that already do that and from reviews they seem to be doing it very well, so i would recommend those for the mesh LODs.The leaf issues is exactly what InfiniTREE will excel at, essentially you have total control over the LODs, which means you can have LODs that have an approximation fo the 3D tree with a LODed bark mesh and instead of branches and leaves, have quads with branch+leaves batch to emulate the groups. This can also be used in the L-trees where a level of growth + leaves can be replaced by quads that have an image of both branch and leaves.

    This is not automated though, so i will see what i can do on these three issues: Billboard creation, billboard shaders and LOD automation for batching stuff (not the actual mesh degradation)
     
    Last edited: Nov 14, 2015
  20. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    InfiniTREE is now on SALE - 35% for a limited time !!!

    Extremely optimized tree system, with real time growth, interaction (e.g. chop) and L-tree variations with easy customization
     
  21. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    UPDATE:

    InfiniTREE 2 is in the works along side my new terrain detailing system, for ultra detail in forest automation with extreme performance.

    Progress so far:
    - Creation of dynamic tree roots that adapt to ground
    - Creation of dynamic branches within Unity
    - Controllable branch shape by splines (both editor & in real time)
    - Branch and root shaping/spawning in real time
    - Branching creation / definition by user input
    - Branch/Root spawn system
    - Tested integration with InfiniGRASS editor - Manager and works fine
    - Optional branch section definition by spline
    - Optional branch sections scale control by animation curve
    - Choice between adapt to Unity terrain (to bypass other objects like rocks) or with raycast for adapting to all objects
    - Partial adapt to ground, to define root bridges
    - Root branching with children follow on ground rules of parent
    - Growth based on physics for roots (and branches)

    To do (some will be for v2.x cycle):
    - Bark sculpting system
    - Local attractors for mass branch shaping
    - Animated roots (this is already done, requires only a few optimizations to sqeeze all possible performance)
    - Billboard renderer and automated billboard LOD creation
    - Billboard shader
    - Integrate to InfiniLAND for automatic tree spread, growth, variation & ground adaptation
    - Adapt tree bark endpoint to ground
    - Next gen shaders (mostly ready from InfiniGRASS, only few changes-additions are needed)
     
  22. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Hi Nasos_333,

    Been awhile between drinks :)

    In regards to our discussion around LOD and billboards, i tried a new asset called Real Imposters and it does seem to do an ok job of making a billboard out of most of my trees (had a persistent failure with one of my trees, which i think can be attributed to it's total size, Unity split it into around 5 separate meshes on import!)

    Problem is at around 10 meters from my tree (before the Imposter kicks in) the leaves already seem to disappear do to the tiny size of each i guess... so the imposter generated looks like a dead tree (i just can't seem to win - lol)

    Just wanted to ask if you know that asset, and or weather you have been able to achieve something like this with InifiTree yet? You mentioned i think partial billboarding of parts of the tree (leaves and branches) if i'm not mistaken, that would work really well i think as a LOD level before going to a billboard... the main point being the billboard needs to be taken of the tree up close or it loses too much detail, so an intermediary LOD would keep the colors and details of the leaves i think/hope.

    PM me if this is best discussed outside the forum, i can send you a tree model to better show what happens, but here is a couple of pics, Imposter from Real Imposter, and a close up of the same tree at full detail.

    imposter_sparse looking tree.png

    upload_2016-2-27_18-52-19.png
     
  23. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    Hi,

    I am working on InfiniTREE 2, so i will see what i can do about billboarding as well. I have a system to grab render of trees and create a very detailed billboard (but not on the fly) for use with a billboard shader (which i have to make).

    InfiniTREE can replace parts of the tree with other items, for example all level 2 branches and leaves can be LODed with a single texture that has both branches and leaves in one quad for example. This is a gradual style of LOD that if done right would be by far the best solution, but needs a lot of manual work to setup, which i hope i will automate for InfiniTREE 2 cycle f possible.

    BTW, cant the impostors system render at higher resolution to make leaves appear ? Or is it too slow to do in real time ?
     
  24. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Hi,

    The author of Real Impostor replied to my email and basically told me to lower my polycount of my trees or take the refund he offered. So i am disappointed there as I wouldn't be chasing a solution like billboards or some kind of auto LOD if it was that simple (or cost effective) for me. YES i am well aware no one uses such super high details objects.. and that's why iam try for some kind of a compromise, I'll use less of them, place them far apart, but still need more than anything a way to billboard them at range - if only it were simple and of course the transition is a difficult one to get right and make look acceptable or even excellent! (transition fade or some LOD in between) i had all the settings at max (512 texture and 8x antialiasing)

    I'd pay several hundred dollars if there was an elegant and efficient solution for my needs with these trees~!

    You say you grab a very detailed billboard, but not on-the-fly? wouldn't this mean the billboard is like Unity's where all the trees are oriented the same way (which is terrible IMHO)? That is what i think is critical, like Real Imposter and AFS they take fresh snapshots from the current view angle. But I think AFS works with trees only, something Real Imposters showed some potential as it's any mesh... in fact t does work, but it doesn't address distance vs quality issue among a slew of other issues i ran into.

    You mention level 2 branches.. my trees are not any kind of recognized tree... they are arbitrary meshes and on top of that they were split up into separate meshes when imported by Unity due to size... and this makes them have no real logic in there division.. ie. the roots might have one large branch and it's leaves, another the trunk and some other major branch and leaves. The only way I can think to intelligently find the parts to be billboarded as leaves and branches would be to use the textures as a reference.

    I have no need for tree chopping for example so a method to reuse (pool?) the trees would be fine, not real sure about instantiation etc, But i imagine you'd want to load one of each tree and use that to display that tree multiple times (like i said i haven't really started with propagation of many objects unless it's been handled by GAIA or Unity (grass details etc)

    What I was asking the Author of Real Imposters was if there was a way to take a closer snapshot of the tree and then use that at the further distance... because if the snapshot is taken of the original tree... at the range it wants to switch to an imposter by then (generally around 10m away) the detail drops to this leafless/lifeless appearance simply due to the fine size of the parts no doubt - that is the holy grail for me... a way to capture the close up and use it at range.

    To illustrate, this is the editor camera.. zoomed out at the point which the leaves no longer show.. instead leaving a glittering dead looking tree. That is nothing to do with billboard or imposter.. just as-is.

    upload_2016-2-28_2-16-20.png
     
    Last edited: Feb 27, 2016
  25. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    I think since the problem is twofold (the trees are very high end to grab at real time with full detail & unity requires all the detail to not produce a leafless tree), there is no easy solution to the problem and i dont think it can be done in real time unless some very cool technique is used like a partial per frames rendering of the billboards, perhaps multithreaded in some way, which is rather hard to perform and not sure to give a result.

    Since though i am a lot in approximations, i could try to come up with a technique to meet the requirements half way, for example a multiangle pre-render of the tree, fully automated, to create the more convincing corss section "billboard" that may have a better feeling than the Unity tree billboards.

    If i have the setup for one angle, i can easilly do multi angle as well and with any detail we need as it is off line.

    Another technique is mentioned here: https://docs.unrealengine.com/latest/INT/Engine/Content/Tools/RenderToTextureTools/3/index.html

    http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php

    This is another solution, to take even more angles and create a sprite sheet that will cycle the billboard texture based on the player view, this could give a very good result that could also be lerped in shader for speed and smooth transition.

    When i get to checking more auto-LOD options (auto not meant as real time, just automated creation of assets to use for billboarding) i will post more here.
     
  26. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Sounds interesting and is at least giving me a little hope as the general consensus is me... trying to use these trees is just not viable... period.

    Here is the reply i got from the creator of Real Imposters after he basically said get a refund... can't help you.

    "Hi,
    if you think my asset will enable you to have 100 trees with 100.000+ polygons each, then yes - this is my last word.
    I'm working in the field of LOD algorithms for 15 years now and think that i know what i'm talking about. I don't have any intrest in wasting your and my time. It just won't work - its an unreasonable amount of pologons. Even for very closeup shots. No one in the industry would do it this way.

    Best regards,
    Sakati"


    So assuming there is a way to do a set of representations of the tree like the sprite sheet mentioned... how do you think your system can handle the number of trees? like mentioned about say 100 trees, lets say only 10 different tree, but 10 clones of each, Is that something that is handled by either the current system you have or the new one to reuse the same on for each?

    Currently one tree or the few i have in the scene (maybe 5-10 at present) i am still getting a good framerate, there is not cloning or anything going on, just individually placed.

    As mentioned, i'd be willing to pay for more than just the asset on the store if there is a solution (although of course if you can do it you can or would likely include it in the package) - It still may also be more efficient for me to pay someone to create at least one LOD of a select few trees, but for some reason i have had trouble finding an animator to do even the smallest of props for me!
     
  27. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    100 trees with such high poly count is indeed very much, plus i am afraid would come to a problem in RAM with a batching system as the meshes created would be split a lot in the 64K limit

    I can have a better answer for such amount of trees after Unity 5.4 is out for a few weeks, this way i can test the new GPU instancing modes and see how they could be used and whether the hurt RAM or not as well.

    I had in mind something like 10-20 trees near and all other LODed, 100 trees in full detail like that is too much i think and would be only option for the highest end of systems. That said GPUs today are monsters, even my old PC can do crazy polygon counts when done right, so the full detail tree count may be increased, but 100 is definity not recommended.

    Imagine that a few SpeedTree trees alone will create an issue without batching, that is why SpeedTree is not yet really usuable in games that need top performance (they do a crazy number of draw calls if they are not billboarded very close to the camera)

    So let me check on all fronts, test Unity 5.4 and then i can say better of what is possible.

    Perhaps in your case a combination of the new GPU instancing and a clevel pooling/reuse of unbatched trees would be the best solution (which is easy i guess to add to the pack)
     
  28. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    The trees already have been split when i imported them into unity, from 3-5 separate meshes.

    GPU sounds good, i do hope it can chew these trees up with ease - hardware is only getting more powerful all the time (I have a nVidia 970... that's my benchmark)

    I never said 100 trees in full detail, if he thought that he assumed. I'm not doing a rainforest etc... it's a desert mostly, so sparse is fine...

    I wasn't aware about SpeedTree and that, tough i had heard they were costly to run.

    Unrelated but it reminds me of a forum post where some guys got together and made a custom shader for grass that was a free solution to get some swaying of leaves while no paid asset seemed to be able to help, another reason i will still use my trees, the shader doesn't take wind into affect, but for a gentle breeze affect it made a big difference (leaves just move.. always a least a little :) )

    MY neighbour turns out to be studying game dev and is learning 3DsMax... he said he'll take a look at the model sometime, maybe be able to make a better LOD, but i do wait with anticipatoin for a breakthorugh, it's appreciated.
     
  29. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    Making trees sway is easy, in InfiniGRASS i have even fences that can sway in the wind :), it can be done in shader and should be very fast.

    In the desert setting a reuse of trees far away from the hero would also be a great idea, this is another option i may look into
     
    ZenMicro likes this.