Wednesday, February 3, 2016

Improving building LOD

Most rendering engines need some form of level of detail management to deal with complexity. In traditional games there is a lot of hand work going into creating multiple views of the same content. A view of a distant tower in a game is likely crafted as an individual asset, it is not a byproduct of the high-detail version used for closeups. There are some very good commercial solutions to produce multiple LOD for assets, even then a lot of massaging is often required.

In our case we want full automation. Our creation tools should be used by people with no understanding of what LOD means. There is no single silver bullet in this case, it is more like a cocktail of copper bullets, but here is one:

If you think about it, distant LODs are necessarily viewed from afar. This is something we can exploit. Most buildings will have rather simple facades compared to their convoluted interiors. If we know the camera cannot be inside a given LOD version of the building, it is safe to remove whatever complexity is not contributing to the exterior. The result is you can cut a lot of information right away without having to lower the fidelity of the facade at all.

You can see the method in this video:



The method cuts from 80% to 90% of the information. It uses raycasting to determine the likelihood of a portion to be seen from outside. To make it quicker, it first discards portions that are trivially known to be outside. For instance all content that projects directly into the bounding box of the object we know is exposed, so there is no need to test for occlusion. Then it removes the portions we found are never exposed. This produces a rather noisy version of the interior. To this we apply some filters to clean it up and produce the lean shapes you see in the video.

The buildings in the video are voxel creations by Landmark players during EverQuest Next's workshop competitions. They are stunning and at the same time were created by someone who has no knowledge of Maya, 3ds max or traditional 3D modeling. For this very same reason we do not want them to think or worry about how their content looks at different LODs. It just has to work.

12 comments:

  1. Is this another example of the voxel occlusion system shown earlier? Or is this a separate system?

    ReplyDelete
    Replies
    1. Also, would it be faster to work in reverse? Start out showing no geometry, and then use raycasting to determine what can be seen?

      Delete
    2. No, this is not linked to the clipmap occlusion system. The clipmap occlusion is real-time and works over entire scene chunks. This is more granular and not fast enough for realtime. (So not fast enough to work in reverse at the moment).

      Delete
    3. Wouldn't working in reverse be faster? Perhaps even fast enough to work in real time? After each raycast hits its first geometry you wouldn't have to evaluate any geometry behind it. Further, if a raycast hits a piece of geometry that has already been flagged you could skip on to the next one without modifying any data.

      Delete
  2. So are you still working with Daybreak directly or have they become just another licensee? This and the occlusion stuff seems like things they currently desperately need.

    ReplyDelete
    Replies
    1. Also wondering the same thing. This occlusion stuff is seriously needed by DGB Landmark and EQN, are you working with them still on this? They need this stuff to also hide their cavern systems from rendering whilst we are on the surface, does your system do this too? Great job Miguel!

      Delete
    2. We are not exclusive with Daybreak, never were. But I cannot comment further than that.

      Delete
    3. Daybreak seriously needs all your occlusion stuff, lod stuff and the awesome selection tool curves/angles it creates. Been watching your videos and DGB needs to step up and see you! Your stuff is amazing. Thank you for your videos and time and I hope DGB is at least interacting with you on some level.

      Thanks for your feedback Miguel. Keep up the fantastic work.

      Delete
  3. One question. I see a lot of stuff being added to VF and reported in a from of "We are implementing this and that, it's not quite ready, but still working on it...". And that's usually all of it. So is there some list of features that are fully integrated and finished? For example, how can I know what is the status of that global illumination you where working on?

    ReplyDelete
    Replies
    1. If you have purchased the voxel studio subscription, I do know you get emailed update lists.

      Delete
  4. It's good to see your efforts on making your engine more viable for rendering on real time. I feel bad for not have enough time to get deeper in this comment.

    I'm sure that voxels are a key component for the next generations of games, and I'm glad to see you always sharing your progress all this years.

    And I wonder, it's viable to make this LOD system work during world generation? Or the it's limited to predefined scenes with limited size?

    ReplyDelete
    Replies
    1. This system is intended for user generated content. For world generation there are better tricks, like avoiding putting the content there in the first place instead of relying on culling.

      Size does not have to be limited, the real limit is it takes some time to process a given LOD. Usually distant LODs can be processed at lower frequency so all this could be running in real time.

      Delete