How to make a proxy (low poly object just for display) in blender 2.8?

i’m wondering how to make proxies in blender.
in all other software, a proxy object is a low poly object displayed only in the viewport, for replacing a too demanding asset and just in the viewport. in the rendered view or final render only the complex object is loaded.

like this example below.

enter image description here
enter image description here

How to do that in blender ? the technique proposed need to work inside of a particle system.
display as bounding a boxe is not an option. the whole point of proxies is that it still give an idea of the volumetry your object is going to take in the scene.

Thanks

1 Like

Sometimes I use the decimate modifier and set it to only affect viewport and not render.
blender_2019-09-19_23-57-29

Otherwise you can create low poly proxies and make them parents for the high poly versions. Hide the high polys from viewport and hide the low polys from render. I usually also put them in different collections too.

3 Likes


good response. but doesn’t work on every model.

this was the max i was able to collapse. still 300 000 polys. unsubdividing by 6 step just freeze my computer to death :slightly_frowning_face:

related ?

Random select some procent vertices, add them to vertex group and use mask modifier with vertex group.

1 Like

Really nice idea !!!


and i could automate that

edit* here the script to automate that

import bpy

A = bpy.context.object

bpy.ops.object.editmode_toggle()
bpy.ops.mesh.select_all(action='DESELECT')
bpy.ops.mesh.select_random(percent=50, seed=0, action='SELECT') #1-50% change here -> 1 = really low poly, cloud like
bpy.ops.wm.call_menu(name="TEXT_MT_templates")

bpy.ops.object.vertex_group_add()
A.vertex_groups[len(A.vertex_groups)-1].name = 'Particle optimisation'
bpy.ops.object.vertex_group_assign()
bpy.ops.object.editmode_toggle()

bpy.ops.object.modifier_add(type='MASK')
A.modifiers[len(A.modifiers)-1].name = 'Particle optimisation'
A.modifiers[len(A.modifiers)-1].vertex_group = 'Particle optimisation'
A.modifiers[len(A.modifiers)-1].invert_vertex_group = True
A.modifiers[len(A.modifiers)-1].show_render = False

any other ideas ?

One idea is to use a plane or two to show rendered image or photo of object and hide it from render with mask modifier.

Hi. I’ve been struggling with the same issue since I also come from sketchup+vray. What I do in blender is model a low poly substitute, then apply a particle system, set it to Emitter, count number set to 1 , then link it to the original high poly model. In the Render tab uncheck the Show Emitter box, in Viewport display tab set the Display As to None and check the Show Emitter box.

Now you have a low poly basic geometry that shows only in viewport and it´s replaced with the original when rendering, hence… a proxy.

This trick has two limitations, 1. the original model has to be in the same .blend file 2. You can´t make it work having a particle sys within a particle sys (at least I haven´t find the way) , best you can do is convert the last particle sys (which contains the proxy particles) in the modifier tab.

I hope it´s clear, and sorry for my english :slight_smile:

If you improve the method let me know, good luck!

Yes, i made a fully functional proxy system in Scatter

2 Likes

This did wonders for previewing my grass landscape in the viewport!

I had to use planar instead of collapse however to really reduce the face count from ~3K to 109. The most important part to me is that I seem to be getting a good preview of density when using these meshes as grass particles (12K particles), vastly improve viewport performance and don’t have to do anything when hitting render.
The only way this could be more convenient if it was an option in the particle > viewport configuration.

(I also kinda, like the Runescape feeling it gives :p)