UniLOD BETA: Level-of-detail and streaming support [UPDATE]

Features

  • Automatic mesh simplification (Windows + Unity Pro only)
  • Generate meshes with reduced polygon count automatically
  • Level-of-detail editor
  • Easily create LOD prefabs that change quality levels or that disappear at a certain distance
  • Build your LOD scene
  • Easily replace existing prefabs with LOD prefabs for converting your scene to a LOD-managed one
  • Group objects together into a single mesh and texture to reduce draw calls
  • Save scene as standard assets or asset bundles
    [/list:u:5d7e76b1a6]- Scene manager
  • Streaming support
  • Stream your scene as the player moves through the world
  • Resources are automatically loaded/unloaded
  • Stream from resource folder, or asset bundles
  • Minimal performance impact with resource buffering
  • Adjustable for your needs, speed or memory
  • Takes care of switching quality levels as the player moves though the world
  • Fully optimized, uses minimal resources
    [/list:u:5d7e76b1a6]- Resource manager
  • Standardized loading for both asset bundles and normal resources
  • Keeps reference counts on your resources and frees them automatically
  • Fully integrated into Unity using UnityEditor API
  • No coding required

[/list:u:5d7e76b1a6]

Editors


  • few others

In action
Lots of objects demo (Old video, new one coming in a few days, it does a much better job now)
Streaming demo
In-game demo

All the demo videos except the first one are running on Running on Vista x64, E6600 at 2.4Ghz, 295GTX and 2GB RAM. (The first video is running on 8800GTX, rest is the same).

Video tutorials
UniLOD Tutorial 1 - Installation
UniLOD Tutorial 2 - Mesh simplification
UniLOD Tutorial 3 - LOD prefab creation
UniLOD Tutorial 4 - LOD scene editing
UniLOD Tutorial 5 - Scene loading

Download
Win + Unity Pro
Mac + Unity Pro
Mac/Win + Unity Indie

Other notes
This is the first released version of UniLOD, I hope you can report all found bugs to me. Personally I have never even tested the Mac version but it is available here anyway. It is very doubtful it will work at this time, but I do plan on fixing it in the future (Feel free to give it a shot, it might just work). Testers have also reported errors with mesh simplification in the Win Pro version, most likely related to .dll dependencies, and although I’m quite sure I removed all of them it still won’t work for some people, so I hope to hear from you on this issue. Also make sure you have newest DirectX and VC++ runtimes if installing the Win Pro version.

Cheers!

  • UPDATE*

UniLOD is now open-source and free for personal and commerical use. You may download the source from here.

This looks very interestng. I’ll test it in a bit and report back. :slight_smile:

hey thanks , that look pretty cool

will that package stay free at all ?

I could have sworn you were Higgy for a second.

On topic, this looks great! I will have to test this out this weekend.

If you had not said that I would have still thought he was HiggyB.

ontopic: I’ll try out the LOD. I suspect the small hiccups might be a problem for my racegame though… I’ll report back!

I had the same thought too :slight_smile:

It’s likely gonna stay free, but I haven’t decided yet.

With LOD alone there shouldn’t be hiccups, I did a lot of experimenting to find the best way to switch quality levels with no framerate impact. If there is some, report it as a bug.

There will be some hiccups if streaming is enabled(as shown in the videos). Although in the demos all houses use 2k diffuse, and 1k normal maps. With a bit smaller textures for streamed objects, and tweaking the streaming settings a little I’m sure you could avoid even those hiccups.

Has anyone got any experiences? Does it work at all? :wink: How about Mac version?

This is great! I just installed it and it seems to work perfectly. I’m going to try implementing it in a game soon.

Anyhow thanks for all your work, really appreciated!

Mac user here - installs and builds, but as it doesn’t have a mesh simplifier, I can’t quickly test the other functionality.

This is seriously awesome work. Thanks so much for releasing this.

The Mac download installs and runs, however, I notice that the mesh simplification is not included. Are you using D3DX to accomplish this?

Yeah it’s just D3DX. I started implementing my own tool but after about three weeks of work realized that the algorithm I chose to implement just simply didn’t do a very good job with uv coordinates. I decided to stop right there as I was on a deadline for the entire UniLOD project, so I used D3DX.

:expressionless:

Time to change my avatar. No offense directly Amon but I like my avatar to be mine, as in unique and only me. I’ll have something new up soon enough. :slight_smile:

On topic, I’ll give this all a look now that I’m here in the thread, but my first reaction was (clearly) about Amon’s avatar. :slight_smile:

I didn’t mean any offence by it. It was just a friendly joke. I’ll switch it back to that muppet krow Mascot of mine.

Soz. :slight_smile:

This is some really fantastic stuff. I haven’t tried it in a practical situation and won’t for some time, but the general structure you have here is great!

Thanks guys :slight_smile:

I’m kinda surprised no one is reporting any bugs however, but if it all works, even better.

Also, the UniLOD library contains a few maybe useful functions: CombineSkinned for combining skinned meshes, but it also lets you provide a skeleton which all of the meshes will use. RemoveBones, AddBones, ReplaceSkeleton and CombineSkeleton for combining different skeletons. Those come in handy if for example, you’d like to combine your character and its armor, but the armor uses some additional bones(for cloth animation or such).

Even if you don’t use LOD or streaming capabilities, you can still get advantage of the AssetBundleManager, which basically provides the same features of Unitys Resource.Load, only for asset bundles. (Unloads automatically, already loaded bundles never get loaded twice, etc.)

I can’t really use this in the project I’m working with now, but hopefully I can dig into it for my next project. It seems like you put a lot of work into this, so I will definitely try to put it to use. :smile:

Excellent.

  • Can you use it without an Asset Server?
  • Do you plan to expose the api so we can connect to our own server (custom server, photon, …)?

My only concern.
It would be painful if middle of a project we couldn’t afford it :confused:
IMO a license clarification is necessary before studios use your library seriously.

I reckon the SceneManager is something that’s extensible, and it could be refactored in a way that makes UniLOD a module for it (and people could easily make others like a lightmapping thing, etc.). Then leave SceneManager free and possibly open source, and sell UniLOD at whatever you think is feasible.

  • It’s in no way connected to the asset server so, yes you can.
  • All relevant functions are exposed. I uploaded the documentation too: UniLOD. Not sure what you mean by connecting to the server.

If someone wants to use this in a project, but is worried about licence problems, please contact me. I’ll decide on the license soon, if I don’t get any bug reports, so I can end the beta. It’s very likely to be free however.

Actually scene manager just loads the scene from an xml file, calls different resource managers based on scene type for loading/unloading, and changes LOD. It works only specifically with scenes generated by the editors. I doubt it would be useful to anyone on its own.