Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

QuickLod - Fast asynchronous lod system

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

  1. RUBILYN

    RUBILYN

    Joined:
    Jun 22, 2013
    Posts:
    54

    Hi ! @chillersanim !

    Thanks you so much ! Seams amazing !
    Its cool how can we conjugate any prefab Contents Just with the LodObjectReplacement !

    Thanks so much for beying working on the Visual feedback also !
    After that would be Reaaly amazing to Have some Youtube Video Tuttorials . ( I will see if i talk with my Studio Partner for us to do some tuttorials on our Open World "big enviroment tipe" Products With QuickLOD integration Usage .. )

    The possibilities of this system are so many that we kinda get lost sometimes ... Thats why the Visual feedback and kinda a better drag & drop system would work wounders ! Expecially latter with the InstantOc Full Compatibility ... a better interface with "All in one place" instead of scatered components, would do wounders i guess ....
    _________
    The Multiple Triggers System i think would be Cool if we can decide "At Wich Lod Level / Distance They are Trigguered"

    I think This Multiple Trigguers System And would be Very Important and pave Ground for the Streaming New Sector Levels From Disck ...

    Have you heard About the New MultiScene Editing features of Unity 5 ?
    http://blogs.unity3d.com/pt/2014/08/04/multi-scene-editing/

    Seams They are preparing Things for entire Levels Streaming ... And its reaaly a Killer Feature !
    http://forum.unity3d.com/threads/unity-5-level-streaming.235037/

    WOuld be Very cool if we could one day do Chunks of Entire Scenes Parts Then Save that Scene Part As a Prefab to disck and have Severall LOD Representations of it somehow ...

    Anyway this are just ideas ... Hope they can materialize Someway somehow !
    __________
    Dear Chiller ! Have you tested QuickLod with Latest Unity beta ?
    http://unity3d.com/unity/beta/5.0

    We will Soon do some more tests Then i will be back to you ^^

    Thanks for your efforts in Keeping QUICKLOD The Best and most Features Updated LOD Extention in Unity !

    Kyo Chun
    KYON Games / A3D STudio
     
  2. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Can you clarify what you mean by "obsolete"? Are you saying that QuickLod does dynamic loading better than SECTR? If so, can you specify what exactly? Thank you
     
  3. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    I can confirm quicklods performance is better than SECTR VIS.

    Workflow, performance and features, Quicklod does it so well.

    I think when people look at your price, they are going presume that it isn't as good as the others, but they would be wrong.

    Welldone indeed !!
     
    twobob likes this.
  4. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    What I mean by obsolete is:
    • QuickLod covers the LOD part of SECTR VIS and SmartLOD
    • InstantOC covers the OC part of SECTR VIS
    SECTR VIS is a system that does LOD and OC at the same time.
    On the other hand, the other systems are optimized for just their job (LOD and OC).

    QuickLod is great in LOD management and offers tonns of features and possibilities.
    I dare to say, that QuickLod is for the LOD part better than SECTR VIS.

    So if you want to have an easy system that does everything for you, then you should use SECTR COMPLETE.
    But if you want to have a system, that is optimized, with many additional features etc, but needs a little bit more work, then you should use QuickLod, InstantOC and SECTR STREAM (or any other streaming system).

    Thanks for the feedback.
    So, do you imply that I should raise the price? ;)

    Greetings
    Chillersanim
     
  5. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    Lol .. you should :p usually assets priced this low give the impression that it's half assed and most of the time they're.

    Also presentation needs a little work ;) (Logo)
     
  6. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @MoHoe
    What price would be better?

    I agree with you, the presentation needs some work, logo, video, website and API documentation.
    I'll try to find some time for it.

    Greetings
    Chillersanim
     
  7. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    39.99 and every now and then do a 50% off sale ;) Da peeps love a sale!! I do :)
     
  8. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    I will surely consider it, but until I have some new features, I won't change the price.
    In the meantime, I will also look into a better presentation... :D

    Greetings
    Chillersanim
     
    Last edited: Nov 16, 2014
  9. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    Does this work for characters (AI) and animations run fine (not going into T-Pose) after first LOD?. The LOD system in Unity by default only can handle static meshes, with the first LOD of AI characters showing animations, any other LOD just T-poses.

    Edit: I think the issue with the T-poses were down to the gameobjects being prefabs. But still this is a good replacement for the current LOD system in the pro version, especially when used with OC.
     
    Last edited: Nov 21, 2014
  10. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    I've made some tests with the animation system in Unity.
    Using the LodObjectReplacement, it worked perfect.

    Animations:
    It works perfectly fine, as QuickLod just switches the skinned mesh renderer, so there's no problem with that.
    When you use for each lod level a single skinned mesh renderer in it's own component, then QuickLod can manage them for you.

    AI:

    As long as you don't disable the AI, it will work.
    You could add the AI components in an object that is not managed by QuickLod.

    As QuickLod works with references to objects, you have full control over what is managed and what isn't.
    That allows you to selectively disable components at any time and at any distance.

    Greetings
    Chillersanim
     
  11. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim - great thanks! I bought Cruncher the other day so this will be a perfect solution. I also use a Pool Manager for the AI, so deleting them or disabling them shouldn't be an issue.
     
    Last edited: Nov 20, 2014
  12. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim - Sorry, forgot to ask. Does QuickLod work on multiplayer? I'm guessing that it just does standard replacement calls for the LOD. So I'm assuming that using something like Photon wouldn't be a problem?

    edit: Also, can each LOD have multiple meshes under a GameObject?
     
  13. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    Yes QuickLod works with multiplayer too.
    As QuickLod is laid out to work with dynamic levels and streaming, it will even work when you stream the whole level from the server to the client.
    Be aware that QuickLod would have to run on the client and not on the server.

    By the way:
    It doesn't matter in which order you load the components.
    So you don't have to make sure, that the LodManager is in the scene before all LodObjects.

    Greetings
    Chillersanim
     
    julianr likes this.
  14. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
  15. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    That's great to hear. :)

    I would like to know how QuickLod works with multiplayer.
    So if you have any trouble implementing QuickLod, please let me know.

    Greetings
    Chillersanim
     
  16. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim - will do. I'm all for time saving products, and this combined with Cruncher will save me months of work! I have around 30 different types of AI so far. Thanks. Keep up the good work!
     
  17. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim - Unfortunately I am getting the same results where only the first LOD0 is being used, and the other LOD1 and LOD2 with animations are T-Posing with QuickLod on AI. Any suggestions?
     
  18. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    I'm sorry to hear that, but don't give up yet. ;)

    Have you testet whether the second lod level works without QuickLod?
    So if you only activate the skinned mesh renderer of the second lod level, do you have animations?
    It can be, that the skinned mesh renderer is somehow not connected to the bones.

    If that's not the cause, can you please post (or pm me) your Lod setup for the character?

    Greetings
    Chillersanim
     
  19. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim
    Yes, the second LOD level works without QuickLod. I'm not sure if it has something to do with the AI scripts. I'll investigate this further and get back to you.
     
  20. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    Can you send me a test file with your setup?
    Perhaps I'll see something that hasn't been documented and will also cause other users trouble.

    Do you get any errors or warnings?

    Greetings
    Chillersanim
     
  21. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim
    No errors or warnings. I can't send you a file without breaking the EULA on other packs, but I'm using the Advanced AI Pro asset in the store. My project folder is also 11 gig. The LOD is working, its just not the animations beyond LOD0. It's just odd, should work as all its doing is switching the others off and using the one LOD, regardless of what you call the gameObject for LOD on the AI side of things. It's just breaking the reference to the Animations.
     
  22. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    I could write a LodObject that just switches the mesh in the skinned mesh renderer. That should solve the problem, as no components or objects are disabled.
    It would be simillar to the LodObjectMesh, but would use the skinned mesh renderer instead of the mesh filter.

    Greetings
    Chillersanim
     
  23. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,212
    @chillersanim - That might do it. Thanks, really appreciate your help. It's driving me nuts :)

    edit: I should then be able to do a video showing lots of AI running towards the player and post it back here then. Good for PR :)
     
  24. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @julianr
    I've made the new component and sent you the download link.
    It's essentially a LodObjectMesh, but it targets the SkinnedMeshRenderer instead of the MeshRenderer.

    If you get problems with the automatic disabling of the SkinnedMeshRenderer when the object is outside of the range, just remove the code in the method "OnLodLevelChanged()".

    A video would be great!
    I'm lacking media at the moment, so every help there is highly appreciated. :)

    @ALL
    The new component will be in the next QuickLod release.
    If you need it before, just ask me for the link.

    Greetings
    Chillersanim
     
  25. RKSandswept

    RKSandswept

    Joined:
    Apr 26, 2013
    Posts:
    22
    Feature: We need to have LOD distance calculated by X and Z only, ignoring Y.
    This is because we have a terrain system custom built that uses vertex offsets from a Texture2D for altitude of the polys, so the bounding box can be very tall relative to the terrain altitude variation over a single block of terrain.

    It would be nice to have a checkbox in the Unity UI to turn Planar vs. 3D distance math.

    We changed the code in QuickLOD as follows to make this work.

    LodSource.cs ...
    Code (csharp):
    1.  
    2.             // Calculation is extended to allow advanced distance calculations in the future
    3.             // R. Keene C. PierLODSource.csce - Flat distance only.
    4.             Vector3 diff = this.gameObject.transform.position - position;
    5.             diff.y = 0.0f;
    6.             realDistance = diff.magnitude;
    7.             var relativeDistance = realDistance;
    8.  
    and in LodObjectMesh.cs and LodObjectReplacement,cs (maybe not needed)
    Code (csharp):
    1.  
    2.             // Sandswept Studios change.  R. Keene C. Pierce 12/4/2014
    3. //            float diagonale =
    4. //                Mathf.Sqrt(
    5. //                    Mathf.Pow(maxBounds.size.x * scale.x, 2) + Mathf.Pow(maxBounds.size.y * scale.y, 2)
    6. //                    + Mathf.Pow(maxBounds.size.z * scale.z, 2));
    7.             float diagonale =
    8.                 Mathf.Sqrt(
    9.                     Mathf.Pow(maxBounds.size.x * scale.x, 2) + Mathf.Pow(maxBounds.size.z * scale.z, 2));
    10.  
    11.  
     
  26. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @RKSandswept

    I do not yet understand your problem.
    Are you creating a 2.5D game, do you want to increase the performance or what exactly are you trying to achieve?
    Please provide me with more informations.

    If you do it for the performance, then I would recommend you to replace:
    Code (CSharp):
    1. Vector3 diff = this.gameObject.transform.position - position;
    2. diff.y = 0.0f;
    3. realDistance = diff.magnitude;
    with:
    Code (CSharp):
    1. float deltaX = this.gameObject.transform.position.x - position.x;
    2. float deltaZ = this.gameObject.transform.position.z - position.z;
    3. realDistance = Mathf.Sqrt(deltaX * deltaX + deltaZ * deltaZ);
    This way, you save two substractions, one multiplication, one addition and an assignement (in this order).

    Edit:
    Replacing the code in LodObjectMesh.cs and LodObjectReplacement.cs only changes the behaviour for recalculating the lod distances. It won't change anything for the game.

    Greetings
    Chillersanim
     
  27. super-cypher

    super-cypher

    Joined:
    May 10, 2014
    Posts:
    117
    hi
    i have unity pro, but haven't needed to use the lod system yet, but will do soon on my next project. How does this compare to unity's? is it better, the same or even not as good?

    thanks
     
    zugsoft likes this.
  28. kaz2057

    kaz2057

    Joined:
    Jan 18, 2011
    Posts:
    326
    Quote this question. What is the advantage compared to Unity LOD default system?

    Thanks
     
  29. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @super-cypher and @kaz2057

    I don't have Unity Pro myself, but I'll try to answer with the informations I got from the Unity documentation.
    Here's a short comparison:

    Unity Pro LOD:
    • The Unity Pro LOD is a frustum based lod system.
    • It replaces child objects depending on the lod level.
    • You can add as many meshes as you want.
    • If you use the Unity naming convention, Unity can automate the setup of a lod group.
    • Although not documented, I asume that it works in the editor too.

    QuickLod:
    • QuickLod is a distance based LOD system.
    • You can either replace the mesh or the child objects depending on the lod level
    • You can add as many meshes as you want
    • When you use the QuickLod naming convention (which is compatible with Unity's), then the setup is automated too.
    • It works in the editor.
    You see, QuickLod offers everything that Unity Pro LOD offers.
    I can't tell you how it looks with the performance of the Unity Pro LOD system, but... Does it support millions of objects simultaneously as QuickLod does?

    QuickLod only features:
    And here are some additional features of QuickLod for which I haven't found a counterpart in Unity Pro LOD:
    • Usable in Unity Free and Pro
    • Automated setup allows an intuitive use of the components
    • Supports multiple cameras: Split screen, security camera, etc is all no problem.
    • Usable for all devices, even single core ones
    • Each component has it's own help section for individual informations
    • Highly optimized, can manage millions of objects with minimal overhead
    • Dynamic system: Support for streaming, thirth party code access and more
    • Many visualizations for optimizing the setup and understanding the workflow
    • Full source code in C#, formated and commented with ReSharper and StyleCop
    • Extensible system, you can use the base classes to easenly create your own extensions
    • Full access support: Change anything and it just works.
    • Many other fancy features (See the documentation in the first post)
    There's a loot that QuickLod offers you but Unity Pro LOD doesn't .
    This list isn't even finished, but I don't want to bore you with minor features.

    Upcoming features:
    I'm currently working on some cool new features, which will improve the performance even more.
    The most important ones are:
    • Support for skinned mesh
    • New tool: Group switch for advanced area culling (See @3DLABS request for more informations)
      • Multiple supported triggers: Distance, Colission, Passage and by code
      • Usable for interior areas that aren't needed the whole time (Like caves, houses, etc.)
    And finally a request to you all:
    I would like to invite all of you to leave a short review how QuickLod worked for you.
    Also if you have experience with both QuickLod and Unity Pro LOD, please give us some informations for comparison.
    Thanks! :)

    Greetings
    Chillersanim
     
    Last edited: Dec 21, 2014
    hopeful likes this.
  30. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @All
    Well I just saw now, that QuickLod has been on 24h sale.
    I want to thank everybody who bought the asset and hope you can use it to optimize your game.
    If you have any questions, feel free to ask them, I'll try to answer them as good as possible.

    Thanks
    Chillersanim
     
  31. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @All

    There is a small bug, that can prevent you from adding lod levels, when the list is empty.
    You can fix this bug by replacing a line of code in the file: Assets/QuickLod/QuickLod/Editor/LOBEditor.cs

    Please replace the line 215:
    Code (CSharp):
    1. this.lodsProp.InsertArrayElementAtIndex(this.lodsProp.arraySize - 1);
    With:
    Code (CSharp):
    1. this.lodsProp.InsertArrayElementAtIndex(Mathf.Max(this.lodsProp.arraySize - 1, 0));
    That should fix the bug.

    If you encounter any other problems, please let me know.

    Greetings
    Chillersanim
     
  32. Cynicat

    Cynicat

    Joined:
    Jun 12, 2013
    Posts:
    290
    does this support LOD based on screen size or is it just distance based?
     
  33. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @Cynicat

    QuickLod is a distance based LOD system.
    But when you know the size of the object, the FOV of the camera and the distance to the camera, you can calculate an approximate screen space value. As the object size and the FOV normaly doesn't change, you can say that the distance is equivalent to the screen space.

    In the background, QuickLod calculates the optimale distances with screen space values. It assumes that your camera has a FOV of 60 and for the object size it takes the vertical length of the bounding box.

    In other words, when you click on "Optimize distances" in a LodObject, you will get "screen space values".
    See this post for some additional informations.

    Edit:
    If you want more settings regarding the "optimize distance" option or distance setup, please let me know.

    Greetings
    Chillersanim
     
    Last edited: Dec 22, 2014
  34. Cynicat

    Cynicat

    Joined:
    Jun 12, 2013
    Posts:
    290
    i was thinking about zooming and such. if you wanted to have a sniper rifle you would need to increase the LOD on the objects in view based on screen size. i do a lot of camera work in my games including context zoom.(hold R to look at things) if it doesn't adapt than i can't really use this. thanks for the info =3
     
  35. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    You can use the "LodDistanceMultiplier" property in the LodManagerBase.cs class.
    That allows you to increase the lod range dynamically when zooming in.

    Edit:
    You can access the active LodManager directly by accesssing the static property "Instance".

    Greetings
    Chillersanim
     
  36. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello All
    Happy new year!

    Here's a short status update:
    I'm working hard on the next version, and also on an API documentation.
    I think this documentation is important, as there are currently many undocumented features in QuickLod.

    The API documentation is currently a work in progress.
    When it's finished, I'll link it to the asset store and the website.
    In the meantime, you can already look into it here.

    I'm happy for any comments and reviews. :)

    Greetings
    Chillersanim
     
    OnePxl likes this.
  37. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello All

    I've submitted the next version of QuickLod (1.5) to the asset store.
    With the next version, the price will rise to 40$.

    The focus for this update was on improving the existing code base and adding some requested features.
    Thanks to these improvements, it is now easier for you and me to extend QuickLod.
    And yes, new features are also included. ;)

    For software developers:
    I now consider QuickLod to be a framework, as it's designed to be extended, offers many helper classes and codes and offers a good API documentation with code examples.
    So if you want a custom lod object or lod manager, just use the provided base classes to get started.
    I'm interested in any experiences (good and bad) with extending QuickLod, so please let me know!

    Here are the most important changes
    • Support for SkinnedMeshRenderer -> Add lod levels to your NPC's
    • The grid has been reworked; chunks have been renamed to cells.
    • The cell size can now be defined for each axis individually
    • The lod sources have gotten a lot of new features:
      • An individual distance multiplier; Change the multiplier for each camera separate
      • They can now observe cameras components and adapt the distance multiplier depending on the FoV
      • If you want to zoom, just change the FoV in the camera component, the rest is handled by QuickLod
    • The lod manager can now highlight all managed objects in the editor
    • Lod objects now have more events so you can observe them
    • Many new methods to get even more information and possibilities
    • General clean up and improvement of the performance and memory usage.
    By the way:
    I have finished another private project, so now I should have more time for QuickLod :)

    The new version is available on the asset store.

    Greetings
    Chillersanim
     
    Last edited: Jan 22, 2015
    hopeful likes this.
  38. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    The new version is now live on the asset store.
    Go check it out!

    As always, please tell me if you have any troubles or requests, and leave a rating and a review ;)
    Thanks!

    Greetings
    Chillersanim
     
  39. quelsh

    quelsh

    Joined:
    May 28, 2014
    Posts:
    6
    Hello,

    I tried to setup the just installed QuickLOD plugin and ran into an issue:

    If I add the LodManagerCubic in an empty scene to an empty game object Unity crashes because it goes out of memory. The reason for that is that in LodManagerCubic.DrawGizmos you iterate with x over this.columnAmount-1 which is at that time at the minimum value of integers which then results in an iteration running from 1 to the maximum value an integer can hold.

    Did I do anything wrong on my side by forgetting to configure something?

    Unity version used is 4.6.1p3

    Regards
     
  40. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @quelsh

    I was able to reproduce and locate the bug.
    The bug is caused by a wrong condition value, that causes the lod manager to set the cell size to zero.
    By drawing the grid, this will cause a memory overflow, as the code tries to draw an unlimited amount of cells.

    To fix this bug, please replace in LodManagerCubic.cs on line 753:
    Code (CSharp):
    1. if (this.chunkSize >= 0)
    with:
    Code (CSharp):
    1. if (this.chunkSize >= 5)
    This if statement and it's content is only for backward compatibility, as previously the cellSize was named chunkSize.

    I'm sorry for the caused troubles.

    Greetings
    Chillersanim.
     
    quelsh likes this.
  41. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @3DLABS (and others too)
    Hey, I just wanted to say, that I'm making good progress with the group switch feature you've requested.
    The system works pretty much like you asked and is highly extensible.

    Create a group switch and reference the objects it should manage.
    Then create some triggers, like a distance trigger or a colission trigger and tell the group switch to use them.
    The group switch is already setup.
    As you can freely define the triggers you want to use, you can create like any combination you want. :D

    The whole system works in the editor too, and offers some nice to have features like:
    • Deactivation delay: Prevent flickering
    • Force trigger state: Control by code if a group switch shows or hides it's content
    • Highlight managed objects: See directly which objects are managed
    • Hierarchy menu: Right click on a game object and add it directly to a group switch
    • Custom triggers: Create your own trigger behaviour that is fully compatible
    • More...
    I'll probably release the next QuickLod version in a week or two.

    Example:
    GroupSwitchDistanceTriggerActivated.PNG
    The cubes in the sphere are managed by the group switch.
    The sphere displays the range of a distance trigger.
    It's currently triggered by the camera in the sphere.

    GroupSwitchDistanceTriggerDeactivated.PNG
    The camera moved outside the sphere.
    All cubes are now deactivated.

    For everyone who hasn't read the previous posts:
    The group switch behaviour is meant to activate and deactivate selected objects which are only used in certain cases.
    Those objects could be the interior of a cave or a house.

    Greetings
    Chillersanim
     
    twobob and hopeful like this.
  42. GetLitGames

    GetLitGames

    Joined:
    Sep 24, 2014
    Posts:
    11
    QuickLOD works well!

    For multiplayer, there is nothing that needs to be done.

    However, I do know that a lot of games are switching out the meshes to allow people to customize their character so you may want to test that. I think what most people do is create multiple gameobjects that are a child of the top level gameobject and they only keep one of them enabled at a time. Since the LOD Object Mesh works on the gameobject, there is nothing that needs to happen there.

    I also like the LOD Groups idea - the ability to define LOD groups and use that instead of having to set the "Distance" parameter in every LOD Object Mesh - but keep that distance field there so that we can override it for individual objects.

    The easiest way to add this feature would be just to predefine ten LOD groups "None", "LOD1" "LOD2" "LOD3" groups in the LOD Manager and have a dropdown list in the LOD Object Mesh so we can select the group for each LOD Mesh. Then when you are automatically adding the LOD Meshes just assign the first one LOD1, and the second one LOD2, etc

    All I can think of right now that the groups would store is the distance value that way it easy to change the LOD1 value in the LOD Manager and have it affect a whole bunch of models without having to find and edit them all.
     
  43. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @SubtleTechnology

    Thank you for your feedback.

    Switching out meshes:
    Switching out meshes in QuickLod is as easy as replacing the meshes in the LodObjectMesh.
    Just use the Lods property of the LodObjectMesh and replace the array with a new one that contains the new meshes.
    The LodObjectMesh will recognize this change and update the visible mesh accordingly.
    The same works also for the LodObjectSkinnedMesh and LodObjectReplacement.

    About the GroupSwitch:
    There seems to be a misunderstanding how this feature will work.
    GroupSwitch just activate and deactivate all managed objects depending on the trigger input.
    A trigger can be distance based, but it doesn't have to.

    You can define for the GroupSwitch which objects it should manage, that is done by reference.
    The managed objects can be LodObjects, but they don't have to.
    When a LodObject gets activated by a GroupSwitch, it will start to update the quality depending on your settings.
    When a LodObject gets deactivated, it just stops working.
    You can't override the activation distance for single LodObjects in a GroupSwitch.

    You can define as many GroupSwitches as you want, so if you have a city, you can define for each house a new GroupSwitch.
    GroupSwitches can also manage other GroupSwitches, so for the example of the city, you can also have a GroupSwitch that deactivates a whole part of the city (with all GroupSwitches of the houses).


    I hope this has clarified some points.
    If you have further questions or remarks, please let me know :)

    Greetings
    Chillersanim
     
  44. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    For those who are interested in the workflow of group switches:

    First create the GroupSwitches and triggers you want to use:
    AddGroupSwitch.png

    Then select the new GroupSwitch, and define which triggers it should use, of course you can filter the available group switches by name.
    SelectTriggers.png

    Afterwards you just need to select the objects which should be managed by a GroupSwitch, right click them and select the option "QuickLod/Add to group switch":
    AddToGroupSwitch.png

    ... and select the group switch which should manage the objects.
    SelectGroupSwitch.png

    When one or multiple of the selected objects already are managed by a GroupSwitch, you will be asked if you want to remove them from the old GroupSwitch first.
    That is optional, as multiple GroupSwitches can manage the same object, but it's not recommended!

    You can of course also select the managed objects in the inspector, but with the hierarchy it's much faster.

    You see, the setup is easy and fast.
    The only step that can take some time is to correctly setup the triggers. ;)

    Greetings
    Chillersanim
     
    twobob likes this.
  45. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    is quicklod compatible with occulus rift?

    and can anyone explain why you would use this with instantoc at the same time?

    thank you
     
  46. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    Hello @melonhead

    Occulus Rift:
    QuickLod should be compatible with occulust rift, as it isn't limited to any amount of cameras.
    Although I haven't tested it, I can't see a reason why it should not work.

    InstantOC + QuickLod:
    InstantOC is strong in occlusion culling.
    On the other hand, QuickLod is strong with lod.

    When indoors, a lod system is not very effective, there InstantOC is clearly the better choise.
    When outdoors, then somethimes there aren't many objects culling each other, or you just see very far, there QuickLod is stronger.

    QuickLod offers a lot of features InstantOC doesn't offer, like extensibility, multiple LodObject types, unlimited lod levels, lod distance multiplier, in editor support, etc.
    So it expands the possibilities of InstantOC with many usefull features.

    Also Frenchfaso and I are working on a deeper compatibility, so you can use both systems perfectly together.

    Greetings
    Chillersanim
     
    hopeful likes this.
  47. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    thanks very helpfull answer.
     
  48. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    does quicklod work with objects that move and rotate using torque and forces? and or animated meshes?

    thanks
     
  49. Gekigengar

    Gekigengar

    Joined:
    Jan 20, 2013
    Posts:
    738
    My game does not use the Unity's default tree system, on where tree changes into billboard on a certain distance. (Only because I have to use a non-default terrain system.)

    The billboard is automatically created in Unity, and surprisingly follows the camera angle pretty neatly. (It even works well transitioning from First person to top down view!)

    I wonder if I could achieve the same with QuickLOD if I implement this on my trees?
     
  50. chillersanim

    chillersanim

    Joined:
    Mar 31, 2013
    Posts:
    219
    @melonhead
    That works perfectly fine.
    Just make sure that the "is static" setting on the lod object is turned off.

    @Gekigengar
    Is the provided billboard a game object?
    If yes, then that should work without problems.
    To be sure, please try activating and deactivating the billboard object during the game. If that works, then it will work with the LodObjectReplacement as well.

    Greetings
    Chillersanim