Search Unity

QuickLod - Fast asynchronous lod system

Discussion in 'Assets and Asset Store' started by chillersanim, Mar 29, 2014.

  1. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    QuickLod - A powerful LOD implementation for game and editor

    THIS ASSET IS NO LONGER UNDER ACTIVE DEVELOPMENT


    The actual version is 1.8.1

    Introduction:

    QuickLod is a super-fast, asynchronous LOD system. It allows you to create large beautiful worlds full of objects with great performance. It works in the editor as well as in the game so you don't need to worry about a slow editor or game. Also it is very performant and usable even on mobile platforms!

    Anything else?
    Oh yes, you can use multiple cameras at once, define unlimited LOD levels and it is even usable for lamps, particles and other kind of objects. The code is cleaned up, well documented and laid out for individual extensions so you can use QuickLod for nearly every situation. Whether you have a static environment, a fully generic world or something in between, QuickLod works with every type of game.

    Setting up QuickLod is easy. Just drop the components on the game objects, and they will try to set them up automatically. Thanks to an intelligent setup algorithm, you can setup a whole scene in just a few minutes, you just need to provide the lod meshes. If that is not enough, then you can read the PDF manual, read the website or ask on the forum for more help.

    Nice... But what is LOD?
    LOD is a short form for level of detail, a technology that is commonly used in most games. Instead of rendering all objects in full quality, they are rendered with lower quality when further away. That allows more complex scenes and very high detail meshes nearby. See the Wikipedia article for more information.


    Links:

    Webpage
    Get a full overview over QuickLod, the most recent documentations and everything is in English and German!

    Asset Store

    Get QuickLod now.

    Demo
    See the system in action and try different settings.

    PDF manual
    Learn how to setup QuickLod.

    API documentation

    Look into the API of QuickLod. (Work in progress, may change in the future)


    Features:

    QuickLod has many features; here are the most important ones:

    Super fast:
    Using an asynchronous computation, you can use thousands of objects with only a minimal performance usage. The advantage against multithreaded solutions is, that you still can use the other threads for other task and have no overhead by switching the data between threads. That is especially useful on smartphones and tables.


    Unlimited LOD levels:
    While a rock probably needs just two LOD levels, a building would need a lot more.
    With QuickLod you are free to decide how many LOD levels you want to use.


    Multiple cameras:
    You can create split screen games or use surveillance cameras.
    QuickLod works with numerous cameras at once!


    Multiple lod object types:
    You don't need to adapt your scene to QuickLod.
    With 5 different lod objects it offers support for nearly all use cases.

    Mesh streaming:
    Only load a mesh into memory when it is actually used.
    Free up the memory so even weak mobile devices can run your game.

    Material switch:
    Change the material of any object based on the distance or lod level.
    Use high quality materials for nearby objects, and cheap one for far away ones.


    Light fading:
    Lights are expensive, but also very visible.
    Just disabling them at a given distance is bad, that's why QuickLod offers Light fading.


    Component Management:
    You want to disable and enable components without replacing the whole object?
    You can do so by using the LodObserver component!


    Editor support:
    You want to create a fast game, but you also want to create a game fast.
    With the editor support, you now have the same advantages in the Unity editor as in the final game.


    Adjustable performance:
    Want to create games for pc or mobile?
    With an adjustable performance usage, the system is usable for all target platforms.

    Dynamic system:
    You can add and remove objects on the fly, modify all variables and see changes directly.
    QuickLod is as dynamic as it can be.

    Great API:
    With the help of tools like ReSharper and StyleCop, the code is clean, readable and good documented. It is laid out for extensions, so you add custom functionality without problems.
    The API is laid out to be accessed by other classes and offers a lot of extra functionality.
    A structured and commented source code as well as a online API documentation will help you understanding the code in a short time.


    Additional tools:
    QuickLod offers additional tools like the GroupSwitch, which help you to get even more fps!

    Compatibility:
    QuickLod is compatible with InstantOC.
    To make QuickLod compatible with SimpleLod, read this blog post
    If you need compatibility with other assets, then feel free to ask me about it.



    Gallery:

    $0.PNG
    Works in the editor.


    $2.PNG
    Supports multiple cameras and editor visualizations


    $4.png
    Can manage components for distance based quality and performance


    $5.PNG
    All components come with custom editors for the best user experience and overview


    $7.PNG
    Many automations to help you setup QuickLod in seconds


    By the way, the QuickLod system has a constant time complexity and is way more powerful than the Unity LodGroups system.
    In fact, it has been successfully tested with over 1'000'000 objects at once!


    Planed features:
    1. Generic fade-in fade-out system (for meshes, lights, particles, etc.)
    2. Garbage free lod management (Already reduced!)
    3. New and better LodManager
    4. Mesh decimator
    Any ideas for more features? Post them here!


    Recent changes:
    • Version 1.8.1:
      • Fixed some bugs
    • Version 1.8:
      • Added mesh streaming ability
      • Added material switch
      • Lod objects can now be kept visible
      • Added option to disable QuickLod in the editor
      • Added a lod converter
      • Improved performance
      • Fixed some bugs
    Check the complete version history on the webpage.


    Finally...

    If you have any questions, suggestions or bug reports, post them here.
    And please rate and leave a review. It really helps a lot!

    Thanks
    Chillersanim
     
    Last edited: Feb 18, 2019
  2. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Edit:
    Moved version history to main post.


    Have fun!

    Greetings
    Chillersanim
     
    Last edited: Mar 17, 2015
  3. paulojsam

    paulojsam

    Joined:
    Jul 2, 2012
    Posts:
    575
    How to use your package with The cruncher plugin please
     
  4. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello

    I don't know Cruncher for my self, but technically it should generate you some meshes or models with meshes.
    As soon as you have the meshes, you have multiple possibilities:
    1. Use the LodObjectMesh component and feed it with the meshes you've got.
    2. Creating an object structure and use the LodObjectReplacement.
    I would recommend you the first possibility because it is the easiest to setup.

    When you don't get meshes from Cruncher, then please write what you get from it.

    Edit:
    As far as I understand from reading the Cruncher website, it generates new Models and saves them in 3D files (probably .fbx or .obj format).
    If that is true, then there should be no problem of using Cruncher and QuickLod together.
    Please tell me if you get any problems.

    Greetings
    Chillersanim
     
    Last edited: May 2, 2014
  5. paulojsam

    paulojsam

    Joined:
    Jul 2, 2012
    Posts:
    575
    i was able to create the lods from cruncher and now im experimenting with
    Lod Object Replacement. From what i understood a person can preview the Lod
    within the scene without pressing play. For that to happen is the local settings option
    the correct one
     
  6. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    When you want QuickLod to work, then you have to add a LodManagerCubic to the scene.
    It should be on an object that doesn't get deletet or deactivated and you have to setup a grid.
    The setup is described in the Manual and on the website, but there are automatisations available.

    When that is done, then the lod works in the editor as it works in the game, it's not actually a preview, it's a fully functioning lod system for the editor.

    If you want to preview the different lod levels without lod manager, then you need to activate the option "Exclude from manager" on the lod object.
    Then you can set the lod level manualy.

    The local settings is used when you want the lod object to use other settings than defined in the lod manager.
    At the moment, only the LodObjectReplacement component has such a settings -> The hide mode.
    The local settings is not needed for QuickLod to work in the editor.

    Greetings
    Chillersanim
     
  7. paulojsam

    paulojsam

    Joined:
    Jul 2, 2012
    Posts:
    575
    Thank you very much for your reply!
     
  8. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    I've been thinking of using QuickLod in conjunction with InstantOC, and I've already purchased both products.

    I like the concept of InstantOC and the way it controls occlusion and LOD, especially when you're on ground level in a cityscape or on a terrain with hills or heavy vegetation, but part of my game will feature aerial views of cityscape and terrain which I think will greatly reduce the effectiveness of InstantOC. I'd like to be able to switch over to QuickLod in that sort of case.

    Is this something that sounds reasonable and do-able?

    I've sent you a PM.
     
  9. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello hopeful

    Yes it is possible to implement both systems (QuickLod and InstantOC).
    What you could do, is to implement both systems, but with one system disabled.
    When you need the other system, just disable the active system first and activate the other system afterwards.
    You would have to use LodObjectReplacement components and the hide mode must be set to "MeshRenderer" so it is compatible with InstantOC.

    At the moment, there's a small problem, because InstantOC does not offer a method to initialize it and hide the active lod levels.
    So when you switch, you would have to do the following:

    QuickLod -> InstantOC
    • Pause the QuickLod calculations in the LodManagerCubic component
    • Search all LodObjects and set the value of the property "CurrentLodLevel" to -1 (Hides all lod levels)
    • Activate all InstantOC camera components (IOCcam)
    InstantOC -> QuickLod:
    • Deactivate all InstantOC camera components
    • Unpause the QuickLod calculations in the LodManagerCubic component
    When you follow this short guideline, then there should be no problem in using both systems.

    I'm going to add support for InstantOC, so those steps will be automated in the future.
    InstantOC and QuickLod complement each other, as InstantOC is good when much is hidden behind other objects and QuickLod is good when in an open world.

    @hopeful:
    I've replied to your pm.

    Greetings
    Chillersanim
     
  10. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    By the way, it is annoying that when I try to search the forum for QuickLod it automatically converts my search term to quickload.

    (Hopefully, this message will now turn up on the searches diverted to quickload and point to the Quicklod thread.)

    EDIT: It looks like my ploy worked! Searching for "quicklod" will now go to this thread even though the term is converted to "quickload." :)
     
    Last edited: May 6, 2014
  11. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello

    As it seems, the Unity forum uses the google search engine.
    You can tell it to search for QuickLod instead, but your right, it does autocorrect the search word.

    Greetings
    Chillersanim
     
  12. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello

    After over a month, I have still no review.
    Please tell me what you think about the product, is it interesting, does it work or has it bugs, do you like it or not...
    I appreciate all reviews/comments, as they help me to improve the product.

    Thanks in advance!

    Ps.
    A next version is comming soon.
    Even if nobody realy uses it, I like to offer an up to date product and will keep updating it.
    Do you have any feature request? Let me know!

    Greetings
    Chillersanim
     
  13. GeorgeAmos

    GeorgeAmos

    Joined:
    Sep 17, 2013
    Posts:
    16
    Hi,

    I am interested in this product. I will try it out and let you know.

    Thank you,
    George
     
  14. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @GeorgeAmos
    Thank you very much.
    I hope it is to your liking, if you have any questions, feel free to ask them here :)

    @All
    A new version will be coming soon, with even more automatizations and features.
    It is perfectly compatible with the current version, so just update and enjoy.

    I'm also working on a video tutorial, it will be finished soon.
    In that tutorial, you can see how to setup and optimize QuickLod.

    Greetings
    Chillersanim
     
  15. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    A new version (V 1.3) is out.
    The update is focused on a better usability.
    It's userfriendlier, faster to setup and has some bugs fixed.

    Look at the first and second post for more informations.

    Greetings
    Chillersanim
     
  16. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    I'm now working on a compatibility with InstantOC.
    When that works, you will be able to use both systems together.
    That would give you the advantage of an occlussion system, together with the advanced lod system of QuickLod.

    I will also release a small update, that makes QuickLod compatible with Unity 4.1+.
    Right now, it's only compatible with Unity 4.4+.

    Greetings
    Chillersanim
     
    red2blue likes this.
  17. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    This looks really gold. Bookmarked it for my To-buy List.

    Thanks!
     
  18. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello everybody.

    I will release the next version soon.
    With that, I want to change the price, as the introduction time is over.

    Owners of QuickLod will not be affected of the price change. -> Buy once, get all updates for free!
    So if you want to buy QuickLod, do it now, or pay more. ;)

    I'm planing on changing the price to 25$.


    And a small preview for the next update.
    As mentioned earlier, it will contain support for InstantOC, and will be compatible with Unity 4.1+.
    You can perhaps even use it with an older version, but I couldn't test it, as Unity 4.0 doesn't work on my pc.

    Also, now you can use a field of view implementation, that allows QuickLod to focus it's performance to the front of the camera. You can even disable chunks that are behind cameras!
    That is especially great, when you want to zoom (binoculars, sniper, etc.)

    You can choose from two FoV modes, hard and smooth.
    Hard has the best optimization, but smooth is less noticeable when rotating the camera.
    You can see it in these examples:

    Field of view - Hard

    Field of view - Soft

    Disable chunks - Hard

    Disable chunks - Soft

    The colors represent the chunk priority.
    Chunks without priority (not visible) won't be updated.


    @red2blue
    Thank you.
    When you have bought and used it, please take some time to leave a review.
    That helps me to improve QuickLod and it helps other users to deceide whether they should buy it or not.
    Have fun!


    Greetings
    Chillersanim
     

    Attached Files:

  19. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200

    Thanks for the quick heads up re the price change. Don't get me wrong, I think you deserve the higher price, but I just bought it for the introduction price :p.
    The upcoming features look absolutly fantastic. I am looking forward to integrate it into my project. Will give you a review as soon as I made some experiences!

    Cheers
     
  20. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Just as a reminder, the introduction period is over soon.
    After that period, the price will change from 10$ to 25$.

    The asset has been submited and is awaiting aproval.
    So you have about 3-6 days before the price changes.

    Have fun

    Greetings
    Chillersanim
     
  21. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello everybody.

    For an unknown reason, the submission to the asset store takes longer than usual (> 1 week).
    I'm sorry for this inconvenience and hope that it will be accepted soon.
    In the meantime, the developement for future features is already in progress. ;)

    Greetings
    Chillersanim
     
    red2blue likes this.
  22. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    I downloaded v1.4 a few days ago. Isn't that the latest version?

    (My system's date for the creation of the new file is July 3.)
     
  23. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hmmm, funy...

    You are right, the asset is already on the asset store.
    I got no e-mail confirmation, but forgot to look at the asset store.

    Can you confirm, that the new version works?

    Greetings
    Chillersanim
     
  24. primus88

    primus88

    Joined:
    May 14, 2013
    Posts:
    611
    I don't really understand how it works.
    I mean, I understand how it works, but I don't understand how you implement it.
    You just drop it on an object and it will automatically convert the objects into lower quality lods? Or I still have to create lod levels for each mesh?
     
  25. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello Primus88

    If you want QuickLod to generate the meshes from a base mesh, then I must answer your question with no.
    QuickLod is not a mesh generator, rather a mesh manager.

    If you have already the meshes ready and want QuickLod to set up the components automaticaly, then I can answer your question with yes.

    However, the system varies a bit, depending on which lod object you take.
    As an example, when you want to have a tree, with 3 different quality levels, and you already have the meshes, then it would work like this:


    When you want to use the LodObjectMesh.
    These meshes should have the same name, with different numbers at the end (Underscore is optional):
    • Tree_0 (High quality)
    • Tree_1 (Medium quality)
    • Tree_2 (Low quality)
    These meshes should be stored in the same folder or even in the same file.
    When you now have a game object with a mesh filter, where one of these meshes is referenced, you can drop a LodObjectMesh component on it.
    As soon as you add this component, QuickLod will search in the folder for other meshes with the same name, add them to the lod levels, sort them depending on the number at the end and generate some distances for them.


    When you want to use the LodObjectReplacement.
    You need to create a game object hierarchy in the hiearachy window, that looks like this:
    • Tree (Contains the LodObjectReplacement)
      • Lod_0 (High quality)
      • Lod_1 (Medium quality)
      • Lod_2 (Low quality)
    The names of those game objects don't matter.
    When you add the LodObjectReplacement to the Tree object, it will search for all child objects, containing a number at the end.
    These objects will be used as lod levels, sorted by the number at the end, and distances will be generated, simillar to the LodObjectMesh.


    In both cases, you can generate the lod levels anew, by using the "Generate all" function.
    I would reccomend you to use the LodObjectMesh whenever possible, as it is faster and uses less ram.

    The answer is so long because this part of the system is not yet documented.
    If you have more questions, feel free to ask them. ;)

    Greetings
    Chillersanim
     
  26. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello everybody.

    I'm from the 26.07.2014 until 10.08.2014 in hollidays.
    If you have questions, just ask them, but I will most likely not answer them until after the hollidays.

    Have fun

    Greetings
    Chillersanim
     
  27. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @All:
    I'm back from holidays.
    So I'm open again for sugestions and stuff.

    @ Matti_McCambridge:
    Thank you for your kind review on the asset store.
    I'm always happy to hear what people think about my products. :)

    Greetings
    Chillersanim
     
  28. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello

    I want to give you a short status update about how QuickLod is progressing.
    I work together with Frenchfaso on a better compatibility with InstantOC, so that you can use the advantages of occlusion culling and a higly customizable lod system together.
    I am sure, that this combination would even be better than Unity's internal LOD and OC system, as they are rather static.

    At the moment, that is the only point I'm working on, so if you have a feature request, feel free to post it here.

    Greetings
    Chillersanim
     
    hopeful likes this.
  29. bhads44

    bhads44

    Joined:
    Feb 19, 2013
    Posts:
    37
    Hello,
    I purchased QuickLod yesterday, and tried to incorperate it into my scene which already uses InstantOC.
    I followed your manual, but had to read through the forum post about naming the LODs before I got it to work. But the frame rate dropped by 1/3rd, to below 20 frames/sec, even though I set the LOD distances to 5, 10 and 1000 (so low just for testing the LOD changes).
    QuickLod appears to disable InstantOC camera culling. Is this the case?
     
  30. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello.

    You shouldn't have to name the lods for QuickLod to work. You only need to reference them. For the auto-setup, you would have to name them, but not for the actuall lod function.

    I can't say what's the problem here withouth further informations.
    It can depend on how much triangles the third lod levels contain. With a distance of 1000 you can still have a lot of objects, resulting in a lot of triangles.
    Also when you have a lot of objects visible at the same time, the dynamic batching can slow the game more than it helps. Try if disabling it and check the difference.
    Did you setup the grid correctly? (not more than around 6000 chunks, covering the whole area, etc)
    Are you using the LodObjectReplacement or the LodObjectMesh?
    LodObjectReplacement has all objects loaded at the same time, and Unity isn't strong with many objects in a scene.

    Please tell me more about your setup, or if you want, you can also send me the scene.

    At the moment, you can activate only one system at the same time.
    By default QuickLod is active, but you can always switch the active lod system in the LodManager component.
    I would reccomend you to use QuickLod in areas with not that much culling (landscapes, mountains, open world, ...), and InstantOC in areas with a lot of culling (indoors, forests, cities, ...)

    I'm working with frenchfaso to increase the compatibility of both systems, so you can use them at the same time for maximum effect.

    Greetings
    Chillersanim
     
    hopeful likes this.
  31. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello All

    I've put the asset on sale for one month.
    You can get it now for 40% less than normal.

    If you haven't already bought it, now would be the perfect time!
    All future updates are for free, as usual. ;)

    Please rate and leave a review, it helps me to improve the asset!


    PS.
    For some reason, the asset store tells you, that it's usable with Unity 4.3.3 or above.
    As it has been tested with Unity 4.1 and above,you can ignore the information on the Asset Store.

    Greetings
    Chillersanim
     
    Last edited: Oct 7, 2014
  32. kinnik

    kinnik

    Joined:
    Sep 6, 2014
    Posts:
    17
    Hi! I'm making a game with a full 3d planet. Would this LOD script be useable in a game without a definite up direction or any flat plains?
     
  33. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello kinnik
    Yes QuickLod is usable with any type of game. It is fully supportive for any games that use a 3d navigation (like your planetary game) and is will work with any up direction for your camera.
    Just make sure that the 3d-grid in the LodManagerCubic component is correctly defined.

    Greetings
    Chillersanim
     
  34. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello all.

    The sale is nearly finished.
    You have still time to buy QuickLod, till the asset store guys accept the new package informations.

    Have fun
    Chillersanim
     
  35. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349

    Hi,

    Is it possible to use this for items without a LOD mesh ? For example for simply making them disssapear when they are far away by disabling their single mesh.

    EDIT: I just checked the demo and i dont see difference when i am in the middle of the spheres, the gain seems to be 1-2fps, am i doing something wrong ? I get around 30fps with and without the manager. I am perfectly sure if these were more complex items it would show a much bigger gain though.

    Also will it disable the items outside the field of view ?

    Thanks
     
    Last edited: Oct 30, 2014
  36. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello nasos_333

    Yes, when you have only one mesh and want to disable it at a given distance, then just use this one mesh.
    When the distance exceeds the given lod distance, the mesh renderer will be disabled (When using LodObjectMesh).
    Optionaly when you want do disable the whole object, you can use the LodObjectReplacement component instead.

    OneMeshSetup.png
    With this setup, the mesh would be visible up to 50 meters, after that the object would be invisible.

    You can increase the object amount in the "Lod objects" tab (you have actually 900 objects in the scene).
    With more objects, you should see a larger difference.
    Also you can try both lod types (Mesh and object replacement).
    I agree with you, that a more complex scene would be better, but I'm no artist and can't create a beautifull testscene like Unity. ;)

    You can disable objects outside the fov, it's described in this post. (post 18)

    Greetings
    Chillersanim
     
  37. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello all

    I've changed the price back to 25$.
    You can still benefit from the sales price, until the assetstore team updates the informations.

    Ps.
    Please rate and leave a review on the asset store.
    It doesn't take much time, but it helps a loot. Thanks!

    Greetings
    Chillersanim
     
    RUBILYN likes this.
  38. RUBILYN

    RUBILYN

    Joined:
    Jun 22, 2013
    Posts:
    54

    HI ! Dear Chillersanim !

    Thanks so much for this wounder full extension.
    Im a Older customer of instantOc And just bought Your Amazing Extension ...

    ( i Did Not Resist the Awesome bargain of the 60% off "Sale" Price Before it ended ... ^^ )

    I still did not tested it ... or maybe im not even going to need it exactly right now .. But iv been reading The Documentation and .. PDF manual, ANd by what is There Are actually some things Features Im Missing to Apply to Our projects ...

    Can i give Some Ideas for Improvements ? Here they come ...

    Big Batch of Crazy LOD Ideas Bellow

    BRING BACK UNITY PRO FEATURES TO QUICKLOD !

    1) Im actually a Big Fan of Unity-Pro Default Lod System ... They have this Extremely Versatile Easy Way to With a Cool "Lod group" Graphical Gauge as you see bellow With a Special focus System That Allows you to Visualize at Which Lod Stage is The Asset ( greying all the rest of the scene ) ...
    http://docs.unity3d.com/uploads/Main/LOD1_demo.jpg


    2) Another Thing is That Unity Pro LOD System works Acording The "Screenspace" the object takes So Smaller Objects in "screensize" get smaller lods, And therefore Don't take as much resources ... Whic For me at least - Reaaly Makes complete sense ...

    3) Another thing of Unity Pro LOD System is that Allow us to Setup LODs Directly in 3Dsmax With Simply aply to a Group of meshes Ending names as (_LOD1, _LOD2, _LOD3 )​

    Now All this 3 Features of UnityPro Native LOD Script are Extremely Needed, and its a Extreme Shame that One having to use IntancOc or QUickLod or even together we have to Discart the Awesome Features that Unity Default LOD script has ...

    My Idea is .. Is Possible to implement those 3 Features in QUICKLOD as well ?

    - And That Instead of Just Mimic the UnityPro Default lOD Features Code - Why not to Enable Users to ALSO use UNITY Pro Lod Conjugated with your System As well ?
    - - For Example, Your Extension Allows to load Any Object And Particles in your LOD Slots
    - - - So Why not Allow Also to load in the LOD slot ( Enable to drag there Prefabs That Have Already the UnityPro LOD Script Aplied - So It Uses BOTH )
    - - - - This Way We Would Use QuickLod to Determinate "DIstance of Lod" From Player ... But Also Let Unity Pro LOD System Calculate Same time "ScreenSpace" Having in this way a Hibrid ...
    - - - - - Imagine that You Have a Large mountain or other big object at Some Distance ( But Actually its screen-space is Huge / so we need more detail for that Element ... Because its space in Screen its bigger ) Here as some others would make all sense to Use both ...
    The Automatic Setup of LODS by name Conventions in Fbx file (filename_LOD1, _LOD2,_LOD3 ) ...

    It Reaaly boosts a Workflow ... So if We could Use QUICKLOD to Go further like Using keywords of (_LOD1-%10 / _LOD2-%50 / _LOD2-%75 ) In file WIth the Extra of the LOD-%Percentage DIstance in the FBX/Prefab file name and the Extension Recognise and Atomatic Setup LOD & DIstances ( as Similar as Unity pro Lod ) Would be Amazingly Greath ! ...
    As would Cut us Literaly Many Hours of Drag & drop in the case of hundreds Meshes Levels ...


    https://d2ujflorbtfzji.cloudfront.n...585f7b-566f-43ea-b76b-cac62cac31fd_scaled.jpg
    We are also Customers of SMARTLOD

    And it haves a Very old Extremely nice feature set that is Able to Load Lod Objects From DIsc ... And Destroy objects from Scene Whenever they are not needed to Spare resources
    This Load from DIsc & Destroy Objects from Scene When they are not needed Is amazing for Large scenes ..
    Could be QUite amazing if Conjugated with QUICKLOD ...And INSTANTOC ...
    Would be also amazing if we could Have Integrated connection with a Pooling System

    like The Free Advanced pooling System .. https://www.assetstore.unity3d.com/#!/content/21059 Even to Go further with the Resources usage ...
    Another Cool Feature Would be to Allow to Have 2 Levels of Dynamic LOD Grids ..

    1 LOD GRID Level for "Individual Small Objects" That Are Near ...
    +1 LOD GRID 2º Level for "Objects Groups" ( That Contain Other Small Lods Inside )

    For Example Imagine a Terrain Divided in a Grid of 10 Parts ... Each of this Subterrains have Alot Objects That Have individual LODs Inside ...

    But would be awsome if we could pick on a Group of Prefabs and Make "LODS For Groups of Prefabs" That have many objects with its own lods Inside ...

    This Would be usefull for Large Open Worlds Games ( as our ) Were The player is For example at the top of a Mountain looking at a Valley ... That Top of a Mountain is Made of Many terrains Divided In Small grids of Grouped Objects ( QuickLOD would be able then to Make LODS of all Terrains Groups that Surround the player in Large Distances ) Then When the Player Travels there , it Dynamically Adapts The LODS of All Groups Of Prefabs there are In the distance ...

    This would be expecially Usefull when we have a Large Scene make out of Mountains with Many Terrains & objects That Suround it and are inside of it ... Imagine that we have a Cave System inside the mountain, but we dont need actually to have the caves there unless the player gets close ... So The Secound Grid For the LOD of Groups of Prefabs Would take care of that !


    http://s30.postimg.org/9szuvt7zl/Markarth_LOD.jpg

    This with the Load From DIsck Asynchronously And Destroy from scene wenever would not be needed, would be simply a Unparalel Performer Boost for large open worlds ...

    I know there is SectrComplete etc ...

    But i Guess with Just Your Product Would be Easier to Setup Entire Landscapes If we Have a 2 Grids LOD System Integrated / a First LOD Grid For Individual Objects / A Secound LOD Grid for Entire Groups Of Objects / WIth its own Respective Lods for individual objects attached in its hierarchy ...

    Allowing Also LOD for Terrains ! So we could build Really Large Landscapes All With LOD GROUPS ! ...

    Just Imagine ! Each of those squares as a Hundreds Lods groups ... With Small parts of terrains with promps atached , that are LOD in 2 Grids one for small objects other for Objects groups ... and all this be Loaded from Disck ... Would do in a large level as this ...

    <3


    http://s12.postimg.org/d9ttw3gtp/Tamriel_4_x_y_large.jpg


    I think this are Some "Killer" Ideas ...

    Thanks so much for Listen. !

    Thanks so much for this amazing Continuously Developed Product ...

    I will make a Good Review whenever i have some time off and Try Your System Better .

    Thank you SO much.


    K.




     
    Last edited: Aug 3, 2015
  39. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @3DLABS

    I've read your post and must say, I'm impressed how much effort you've put into your ideas.
    Those ideas are quite good, but you can already acchieve most of your ideas with the current version.
    Please understand that I am an Unity Free user, so I have no experience with Unity Pro Lod.

    First three suggestions
    1) Your suggestion would be a GUI change, it's possible but I'm not yet sure if I can implement it as such.

    2) Unity Pro works with screenspace of objects. When you click on "Recalculate distances", QuickLod will recalculate the distances based on screenspace values. So the result is the same as in Unity Pro, but you are much more flexible than with fixed values. It takes the size of the object and the default FOV of 60 to calculate optimal distances for the different lod levels.

    3) When setting up a lod group with the LodObjectMesh component, it already looks into the available meshes of a file (depending on the given mesh) and creates lod levels with it. It only takes the numbers at the end, so keywords aren't necessary. I made a document that explains it more detailed.

    Naming conventions (aka. _Lod1%20)
    I think, this is for the same reason as point 2 no longer necessary.
    It's already automated.

    Load and unload objects from game
    Loading and unloading objects from game is a ressource heavy operation, as Unity's "instantiate" and "destroy" functions aren't async (Is going to change in Unity 5).
    Using an object pool, would be one way, but for the most objects it's not necessary.
    With the LodObjectMesh component, only the currently used mesh is used. There aren't multiple objects thus no unused ressources. -> Use LodObjectMesh whenever possible!

    Multigrid
    QuickLod is already heavy optimized with the usage of the grid.
    If you want to further increase it by using a second grid, then I would have to change huge amounts of code.
    Let me offer you another idea instead:
    Instead of using a second grid, use an object that disables/enables all referenced objects at a given distance to the camera. With this method, you can use grid-independend objects to use as switch for large amount of objects.
    When a LodObject is disabled, it automaticaly unregisters itself from the LodManager (and registers when enabled), so disabled objects aren't any longer recognized by QuickLod.
    If would also be more flexible, as you don't just have a second grid, but a possibility to create as much layers as you want.

    Large worlds

    Large worlds in Unity are a problem.
    This is because of the ressource overhead when using a lot of objects.
    For this problem, you would need a dynamic loading system.
    This system would load/unload whole gameObjects from the game and store them into an optimized database.
    QuickLod can't do that, as it already needs the loaded objects.

    Hope I was able to help you.

    Greetings
    Chillersanim
     
    red2blue likes this.
  40. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    The sale has now finaly ended.
    The price is back to 25$.

    @3DLABS
    I'm currently working on the group-switches.
    If you have any conditions on how they should work, please let me know.

    Right now, the idea is like this:
    1. You create a switchobject with a "switch" component.
    2. You reference all objects which must be switched (e.g. cave + interior) in the switch component
    3. The switchobject enables all referenced objects when inside the range to any camera (and vice versa)
    Step 1+2 could be automatized with a function.

    I will probably make a switch-component with multiple possible triggers like:
    • Distance: When you are in range
    • Door: When you step through the entrance of the cave, cave get's enabled
    • Inside: As long as a collider is inside another collider, the stuff is enabled
    • Code: You can call two methods to activate/deactivate the stuff

    Greetings
    Chillersanim
     
  41. RUBILYN

    RUBILYN

    Joined:
    Jun 22, 2013
    Posts:
    54
    Hi Hello There !

    Chiller! You are Magnificent!

    Thank you deeply so much for Listening to My Humble Ideas / And be Already Working on them !

    ---
    Thank you also for your Deep Explanation of your Amazing Product Features !

    --
    That System on Groups Of Prefabs Switch On/Off Will be Great !
    I made Bellow a Small Case Study On the Full Spectrum of What we are needing For our "Open WOrld" Game here ...

    Im Positive sure that now with UNITY 5 64Bits Many other Productions will Raise the Level of Detail and go "Open World" ...

    SO i think if you can Do Something on this kinds of Needs, you are already preparing The Future of your Extension to Unity 5 and Giant Worlds Features ...

    THANK YOU SO MUCH !

    K.

    OPEN WORLD & GROUPS LODS Case Study ...

    Ok SO basicaly its like this ...

    If We Have a Way to Just "Transform" the common LOD System Allowing "Entire Hierarchy of Objects" to Be Used Instead of " just 1 object WOuld be Greath ...


    But Let me Explain in Some Case Study .. In our Production needs ...





    We are Working on the ALPHA ORION wich is a High Fantasy Scify "World Exploration" Game ... That Will have Completly Crazy "Voxel Type" Of Open WOrld Landscapes Were its not just the "Above the world" type of terrains but a Entire "Inner Underground WOrlds" Full of Caves to Explore ...



    The Biggest thing in this kind of Levels is that all the giant mesh terrains That in all them the user can fly there and Step in ...

    So we kinda need a system that we can Replace Common Terrain by "Mesh terrains" That have things above and Aggressive LOD Group system ...

    This Massive mesh terrains must be Organic and Modeled ...

    Also Divided by Sections That Are "Groups" of Hundreds Geometries ... That Toguether at Distance Got a Certain Lod ...
    And as We get close The "Entire groups" must be replaced with More Defenition Meshes ...

    And as you STep in Those Become with even more Defenition Enouph to the player Walk in ( So the higuer levels Must Have High Poly Colliders .. wille all other meshes dont even need coliders at all to keep resources )


    The Optimal For this Type of Game would be VoxelFarm.com ...
    But as Its a System that Custs 50.000$ ...



    So we Will do All by Hand in 3DCoat / Zbrush ..
    WIch is actually better and gives more high results




    Decimations Will take place on the Modeler Program ...

    ANd we kinda need Expecially crowded Places ... Full of "Objects Groups" That Are low poly in The Distance



    And as we get close ... They Become Walkable ..



    The Problem here is that we want to make Every litle pieçe of land that we can see in the Distance "Walkable"





    And for that to be possible we need to have spots like this Bellow For example, Were Absolutely all the meshes / For example SpeedTrees / rocks / Terrains / Grass Particles ...



    All they Must be a "Entire group" With Severall LOD Representations, ( So Far Away not be walkable, not Have Colliders )
    / But as you get Closer Your ( Dragon Ball z ) Like Flyable character Can Land 360Degrees Everywere, from a litle spot up to Inside The Mountains In the distance



    So for example in this case The Mountains Far Away Must Contains Hundreds Geometries caves and entire Levels "Inside of them" But Far in the Distance they Are just a "Low Poly Group of objects" ...

    And As you get Closer those "Groups of Hundreds Objects" Are Replaced by Refined LODS





    So this to Have that More Almost Organic "Voxel" but Hand Modeled World ... With SOmetimes Reaaly High poly meshes



    The Fact that Characters in the ALPHA ORION Game will be able to fly ... 360º Degrees and The Landscapes have sky and also Floating islands Types ..





    Will make the need of the LOD GROUPS "Grid system" to Reach even on Giant Distances ...

    And the LOD Grid not Just Act "Horizontally" But also Act Verticaly ...



    Basically the LOD grid SHould be Not just 1 Vertical but 3 Grids That React 360 Degrees and Extend itself to the Infinity of the scene .. werever the character flyes...



    We are thinking on Conjugating your Extension with Sector Complete https://www.assetstore.unity3d.com/en/#!/content/15356

    To Achieve this kind of Workflow ... And Have Unity 5 Merge of Scenes also Integrated ... So Complete Scenes are STreamed from the DIstance ...

    ----

    But Anyway it will be like ANother Year - Untill we achieve and conjugate and consolidate all the needed systems to achieve all this ...

    Its quite a crazy Job Around here ...



    Hope you get the idea !

    --------------

    By the Way ... I know this is already asking too much ...

    - But Would be Awsome Greath if we could have a Advanced Hyperview Schematic View / Graph Of Objects Grouped With LOD groups ..

    There is this Free Extension called Hyperview as you can See Bellow ...

    http://u3d.as/content/ouse-games/hyperviews/3x1

    Actually it is also Open Source : You Can Get it here to apply to your Product :

    http://u3d.as/content/ouse-games/hyperview-source/3x0

    If you Could Apply that Hyperview Sourçe Code to your Extension / So we can manage Groups in a More Visual Way ...
    That kind of More Positively modern Interface .. / It Will Seriously make of you a Unity Extensions Star ! And would be Completly Ubber Dubber Amazing for all us !









    THANKS DEEPLY SO MUCH FOR LISTENING !
     
    Last edited: Aug 3, 2015
  42. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @3DLABS

    This is quite a big project you have there.
    I can tell you for sure, that you need a heavy optimization pack.

    QuickLod is for the LOD part sufficient.
    It is possible to optimize it even more, but I think right now it's not the part where you can gain the most.
    Just to clear things up, QuickLod already uses a 3D grid, so you can expand it on all three axis.

    Dynamic loading system
    What you need (as you already said), is a dynamic loading system, that loads objects from disc into your scene and destroys objects when no longer needed.
    I would reccomend a grid-based loading system, as it is standard in most open world games (like skyrim).
    Such a system has already been requested by another user, and I'm evaluating it.

    Right now, the biggest problem I see, is to keep references alive, or at least don't break references by destroying objects.
    As long as you don't reference objects directly, there should be no problems with Null-references.

    To keep the underlying database small, you can use prefabs in the database, instead of full copies. That would work like the prefab system in Unity.

    Perhaps I will create such a system, but right now I don't have much time left, and can't promise anything.

    Terrain
    There are some voxel terrains out there in the asset store.
    I have no experience with any of them, so I can't help you there.

    When you combine the Unity terrain with mesh objects, you could splitt those mesh objects into smaller chunks, create some lod levels (decimated copies) and use QuickLod to take care of the rest.

    Visual tree extension
    It would definitely be fancy, but is not on my priority list.

    Personal extensions
    Did you know, that QuickLod is build like a framework (although a small one)?
    There are some helper classes, which already cover some functionality.
    The documentation is mostly in the code.

    So if you need a custom LodManager, then you can simply use the LodManagerBase.cs class, and all other parts will already work with it. The object registering and such is already implemented and you (or your software developer) can concentrate on the main functionality.

    That gives you the freedom, to extend QuickLod and optimize it perfectly for your purposes.
    I won't stop extending QuickLod, but I will keep the classes backward compatible.


    Greetings
    Chillersanim
     
    RUBILYN likes this.
  43. RUBILYN

    RUBILYN

    Joined:
    Jun 22, 2013
    Posts:
    54

    Hello Dear chillersanim !

    Thanks so much for the chill talk ! Im Learning alot ! You been a awesome astonishing Technical support to Help us in determine our way to go ...

    I am actually the Project and product manager at the recent Formed A3D Studio ( i am the one that does the "Product schemes" around here ) ... And one thing about this cool project is that beside a "Open World" it will be also kind of a "Open Sources" as we will Sell Basically all our World Models and even the Big Giant Many Gigabites Unity 5 World Complete Original BigScenes At Assets Store ... So we actually will need a "Default Streaming Lod" Extension to Advertise as "Powered by" near all our "Open worlds Products" . And Of course make our Clients to "Buy that" extension if they want to actually use our giant Worlds . As far as the Price is Concerned ( as quickLod is such a small price ) i think it will be our choice to advertise The "Powered by QuickLod" in All our Big Scenes : )

    As far as Extensions we are using, so far we have Bought : InstantOc ( For rayCast Lod With Areas that is very good for flying characters ) / QuickLod ( Very good for Objects Grouping, Pooling, Ubber Large amounts of near objects Optimization ) / SmartLod ( Awsome for Distant Objects, as got the "Load from disc & Destroy Object from Scene Features ) / Sectr Complete ( The Actual Only Way to Have "Load from disc of entire sectors of the scene, even to load entire massive giant scenes Dynamicaly with scenes Impostors Replacement Rendered in the distance ) / MegaScatter ( For Custom Mesh Scatters ) / Daedalus ( For Random Large scale Dungeon Caves Generator ) / TerrainComposer ( For Common terrain Development ) / Planetary Terrain ( For Planet Size Renders ) / Proland to unity ( From Atmosphere to Planetary Terrain Size Aprouxes ) / Voxeland & Ruamoko ( for Voxel Terrain Parts ) / RTP ( For Triplanar Voxels Shader, Terrain Shader, World Size Shader ) / ShaderForge ( For Mega Splat Pbs Texturing ) ... And Some Small Others, that we will Alternating acording the Each Scene Plot needs, and been quite a chalenge to try to conjugate all that toguether, ( Wich been seriously dificult in Unity 4 / 32 bits cause of the constant Memory crashes .. So Right now we are porting Work to Unity 5 64 bits .. finaly ! Its also great that QUICKLOD allows So much actively such soft Integration with all those !


    Thanks so much for your Help and your Amazing Extension ! Its been a Joy Ride !

    Very Best Regards.

    K.

    PS: You can Count our Studio in if you need Some heavy Beta Testing on new Features and Debugs Tru this next year ... Please take your time to do wonders !



    THANKS SO MUCH !

    Kyo Chun
    KYON Games / A3D Studio
     
    Last edited: Nov 7, 2014
  44. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @3DLABS

    I am working with Frenchfasso to integrate both products even more, so you can use them both at the same time.
    At the moment, he's refactoring his API for this reason.
    As long as he isn't finished, I can't integrate those products more.

    When you have a dynamic loading system, those other products (Smart LOD + Sectr) would be obsolete, as their functions would be covered by the dynamic loading system, QuickLod and InstantOC.

    By the way, I'm not sure, whether brilliantgamestudios is still developing SmartLOD or not, as his last reply on his thread is nearly a year old. The lowered price is also an indicator.

    I will continue improving QuickLod, whether I want to collaborate with other people or not is not something I want to deceide hastily.

    Greetings
    Chillersanim
     
    RUBILYN likes this.
  45. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    InstantOC already has the ability to load LOD levels from disk, doesn't it? That feature from SmartLOD was incorporated into InstantOC, if I understand correctly, so I don't know if there is any benefit to having both SmartLOD and InstantOC.

    If QuickLOD is configured to do the same thing - reading from disk, destroying when not needed - it would need to do so without conflicting with InstantOC ... right? Otherwise there could be a lot of thrashing.
     
  46. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @hopeful
    As far as I know, does InstantOC not load the lod levels from disc.
    Instead it enables/disables the renderers of childobjects.

    QuickLod offers a performanter way than loading objects from disc:
    Changing the mesh in the mesh renderer.

    By doing so, there is no overhead, no loading/destroying, no additional memory usage, etc.
    It just changes the mesh accordingly to the distance and you realy use just one object.

    I'm working on a next version, that will ship a component-activator, with which you can enable/disable components of the lod object according to the current lod level. With that system, you will be able, to disable the colliders/particles/lamps, etc. at a certain distance to.
    As far as I can tell, that would be the most efficient way.

    Greetings
    Chillersanim
     
    twobob and RUBILYN like this.
  47. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    This is from the description of InstantOC, in the first post of their release thread:

    "- dynamic load/unload of LOD levels from disk at runtime (like SmartLOD)"

    So ... am I misunderstanding something? If I'm not mistaken, InstantOC has had this feature since around Feb/Mar of this year.

    I agree a feature like that must be carefully used. I would be worried about potentially slowing fps with a lot of load / destroy calls.
     
  48. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Ah yes

    I didn't read the post, instead I looked into the actual code of InstantOC.
    In the current code base of InstantOC, that feature is not yet implemented, as only the mesh renderers are activated/deactivated. There's no actual loading/unloading of objects.

    That feature is described in the upcoming features list from the post.

    Greetings
    Chillersanim
     
  49. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    Ah! Yes, you are right. I should have read that more closely.

    Apparently he's been talking about adding this since Jan 11, but it isn't in yet. :(
     
  50. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @3DLABS
    I've continued with the group-switch idea.
    Right now, you can already acchieve it when you use the LodObjectReplacement component.
    When all cave objects are childs of the first lod level, then they would get deactivated when the first lod level is no longer active (and vice verca).

    Example hierarchy:
    • LodObjectReplacement
      • Lod0
        • (All cave objects come here)
      • Lod1
        • (Visuals for cave entry could come here)

    So with the current version of QuickLod, you can already create a switch for your caves.
    This switch can either be distance based (default) or triggered by code (by setting the lod level).

    I'm working on a specific switch with multiple triggers and more visual feedback, but the basic functionality is already built in QuickLod.

    Greetings
    Chillersanim
     
    RUBILYN likes this.