Level of Detail [addon]

Need suggestion why not working for me. What i did i created a cylinder and given rigid body and drop in the bowl. Then i shift+d and made several copies to side and a stack also and drop into the bowl to make a shape. Then i deleted all they frame and got the shape and the cylinder.

shapesss

With the high mesh i have set.

When trying to render. Only 1 side cylinder change to high mesh

So why other cylinder in the bowl did not render. How it will work. Thanks for the addon.

Two problems in your methodology:
-You used Shift-D before setting your LOD, thus all your copies currently don’t have any LOD set up.
-you might want to use alt+D for this case. i’d advise to learn the difference between making duplicates and copies. :slight_smile:

I may need a file sample in order to understand your problem more deeply if the two advices here above didn’t help

cheers

I tried object Data. With 1 cylinder selected shift selected ctrl+L object Data. Converted all the mesh to single Data. Still not not working. Will plz you can try with my file link given below.

Blend file

No It’s working correctly
It’s just that you did a bit weird stuff with first of all duplicating the model instead of instancing it, doing the LOD set up after duplicating everything and hoping that it would apply to all copies somehow & also there was error in transforms, where the high transforms wasn’t the same as the proxy transform

Here is the corrected file
https://pasteall.org/blend/3aa44eab9e32427eb0fed4f0d54855c6

1 Like

I updated Lodify with v0.3

since 2.92 rendered view were not detected anymore by depsgraph update, the rendered view state detection is done via timer now

4 Likes

I’ve used this addon and its literally my salvation, i make rigs and stuff and i used it for a complex one with a lot of tiny high quality objects, works amazingly nice after linking to another scene

exept when the addon is not installed, is there a way to link the script within a rig to force this kind of action when the addon is not present?

love your work and thanks too

2 Likes

Hey

You will note that, although it’s working with rigs, the blender team designed their own pipeline based solution

As for non-scripting solution, you will need to disable lodify on all your model when sending the file to a render farm for example. No other solutions unfortunately

1 Like

fr? haven’t seen anything like this so I assumed this was the only way to easily change between lods, is it another addon?

No it’s their library override/old proxy system

Hey, i’d like to know if proxify would work with linked assets.
For example, if i have a .blend containing only the reference of heavy assets, as collection intance for example, would it be possible to load only the LOD version in the current scene, and load the HD version in render or if i click on a button ?

This is for example some Imeshh assets, the creator is from architecture modeling and add 12 surburf on every mesh, and they are very heavy and not to scale.

As there is no working asset manager yet, it’s easier to make a python script to link all to the scene, and use the scene to get inspiration of what to use. But if i link all imeshh collection the scene would take years to load all geometry to my ram, until the swap as i only have 64gigs.

What would be great is to have a collection of .blend, each having LOD generated per object or per collection, and linking only the simplified one to block out the scene, and use the HD version when needed (or LOD1, LOD2, LOD3 depending on object size relative to camera).

Nope

I’ll update lodify for blender 3.0 :slight_smile:
I should be able to port lodify principle to a geometry node modifier, that should work well with linked assets
i still need to do some research about it but it looks promising

5 Likes

It actually works. In the attached example I have an asset with three lods. in the proxy lod I active lodify setting the other two lod. In the scene file I link the proxy object, I make it local (only object) and everything works without any mesh being loaded into the scene (all linked).

asset file
main scene file

if you have to send your file to a render farm it’s better to enable the lod system in the lod0 object, so without the addon it will work just the same.

1 Like

Append seems to work fine, but link object or collection doesn’t work the same way.

1 Like

Unfortunately blender will disabled all settings of linked data
that’s why i believe that converting lodify into a geonode modifier is better

why not? Exactly what doesn’t work for you if you link the asset object? I have been using this system for a long time and have never had any problems. Did you try the example I gave before?

I also think that using geonode is better, so you don’t need an external addon and there is greater compatibility. I’m just waiting for the “is render preview” node.
However, to solve the problem of blocked settings I have written an addon that changes the settings via python and it works. Obviously these are temporary changes because when the file is reopened the settings of the original asset will be reloaded, but sometimes I just need to temporarily see the lod0 in viewport. If I have to “permanently” change the settings of an asset (eg change from lod0 to lod 1 in the final render) I use another operator of my addon that saves the “local settings” state in some custom properties of the object (which is local). When the file is reopened with another operator, I restore the saved state for each object that has it.

1 Like

Not sure if the feedback was taken into consideration tho :sweat_smile:
i think we’ll still need to use the timer to check rendered state for a while

In case you forgot to apply the scale of your objects + LOD here’s a script to apply the scale of all your LOD without the CTRL-A operator. as you may know, we can’t apply stuff in blender if a mesh have multiple users wich is the case with Lodify.

#THIS SCRIPT WILL APPLY SCALE OF ALL LOD IN LOD LIST 
#->OF SELECTED OBJECTS

import bpy, bmesh

def bmesh_apply_scale(me, xyzscale):
    
    if xyzscale==(1,1,1):
        return None 

    bm = bmesh.new() 
    bm.from_mesh(me)  

    for v in bm.verts:
        v.co.x *= xyzscale[0]
        v.co.y *= xyzscale[1]
        v.co.z *= xyzscale[2]

    bm.to_mesh(me)
    bm.free()
    
    return None 

for o in bpy.context.selected_objects: #bpy.context.scene.objects:
    
    if not o.lod_original:
        continue 
    
    if o.scale==(1,1,1):
        continue 

    print("")
    print(f"New object: {o.name}")
            
    xyzscale = o.scale
    for l in o.data.lod_list:
        me = l.ui_lod
        print(f"Applying Scale: {me.name}")
        bmesh_apply_scale(me, xyzscale)
        continue 
            
    o.scale=(1,1,1)
    continue

ps

as you may know, we can’t apply stuff in blender if a mesh have multiple users

I really don’t understand why there is such limitation in blender… i did the job easily with bmesh …

note that the script may be slow if you have a lot of assets selected or a lot of vertices, so i put prints statement, just open the console to see the status.

5 Likes

Apply Scale to Instances would be… a hella useful addon.

Perhaps a special operator could be made which sets all low LOD items to non render and the high details to render only. They could even get a driver. This could be an special operator of some needs to send this file to a farm. It will be destructive as it will ruin the file setup, but you could warn a user.

Since everything about which object i using which mesh at what op nt, i think it could be feasible to make this