I created a LOD system that also act as a Proxy system, and can also optionally back-up your mesh-data. It’s working as a mesh-data exchanging system available as a new panel in
Properties>Mesh-data>Level of Detail, i will do a little presentation video tomorrow.
About the addon:
You can choose which lods you want to display in either the active viewport, the
rendered view or the final render individually.
The LOD system use API properties stored within your object and object-data
properties, that mean that once you created a LOD system for your object,
the LOD(s) data will stick with it once you copy or append your obj to
another file for example. Even to users who don’t have Lodify installed yet.
You can automatically search for lods according to their names, if you use a
“Suzanne LOD 0”,“Suzanne LOD 1”,“Suzanne LOD 2” naming system or something similar.
You can use this LOD system as a data backup management system if you need to store
your mesh data while working on destructive hardsurface modeling for example.
You will find two ‘backup’ operators in the menu next to the LOD list.
Note that each LODs can have their own materials, as the material data is stored per
meshes and not per objects.
Keep in mind that pointers are considered as data-users. You might want to clean
leftovers pointers from deleted objects with the ‘cleanse data-block’ operator.
If you are animating via Modifiers (Bones for ex) the LOD system will work perfectly with
your animation, assuming that the Vgroups are all assigned correctly for each level of detail
(that’s why it’s more easy to create your lod from the final model, as the vgroup will
automatically be assigned when you simplify the topology or decimate it).Shape Keys animation
are not compatible with LOD.
Regarding the Rendered view automatic mesh-data switching:
Note that Lodify will try to update the mesh-data on each “blender internal update signal”
(called depsgraph update), so if you use a custom shortcut or pie menu that don’t send those
“depsgraph updates” you might just want to click anywhere on the viewport to send a new one.
(the default header shading viewport buttons will work 100% of the time for sure).
The addon was not made with linking from external blends in mind.
render.interface_lock will be enabled with this addon, this can be disable in the options (but expect some crashes if removed)
About the addon python code:
This addon basically act as a big mesh-data exchanging system where i exchange mesh data
according to booleans stored in ui-lists.
As i’m drawing inside object-meshdata and i’m constantly switching the active mesh,
‘lod_original’ pointer is used as a constance, and is stored in object properties of
all mesh-data owners. if you need to work with lodify api, always use this constance
if not None. object.data is simply not reliable (-> ‘true_mesh_data’)
All the Lod-switch is done via a fct on each depsg udpate, (->‘analyse_and_exchange_data’)
the code just analyse the ui-lists of all objects, if list exist and if boolean filled,
the mesh-data is exchanged or restored accordingly.
Due to a severe blender crash, while in rendered view, if data is changed from a fct in a
depsgraph, it will crash blender back to desktop instantaneously. To counter that, if user
in rendered view and changing rendered boolan, the view will be toggled back and forth.
You can experience this bug for yourself if you delete ‘toggle_shading’ in lines 825 and 827.
(i did my best so that the addon respect blender native UI)