Proxify 🖥️ [Free Universal Proxy system for blender 2.8][WIP]

I am using blender-2.83-b59adcaa3683-windows64 and if I correctly installed the addon (I can see the Proxify options in the Scene Properties tab), I have no clue how to make it work. After selecting a high poly mesh (subdivided several times), I clicked on the Proxify buttons (in this Scene Properties tab), but nothing happened in the viewport. Maybe you could you make a short video tutorial ?

Yeah sure, i’ll make a Full youtube tutorial when Scatter S1 is out, in the meanwhile, i said that there’s a new tab in Object>Viewport Display, where you expect this to be at the first place

(you can hide, delete the proxy afterwards if you want)

The tab in Properties>Scene == more advance toggling batch tools and behavior options

4 Likes

Oops, I guess I got confused by this sentence : Individually assign proxies in object > viewport display > Proxify with a pointer.
I was searching in the Object menu. Sorry.

1 Like

Fair enough

Looks good. I’ll try this. Thanks

1 Like

Update Proxify V2

ALT support for batch the selection in Properties>Object
(alt is always supposed to batch change/execute the selection for those who don’t know)

edit:
also added CTRL for scene toggle, so now the need of changing panels is fairly limited. way more handy and fast now.

7 Likes

what if i move everything is in Properties>Object>Viewport Display and try to add more batch selection/whole scene operation with CTRL and ALT ?

(moving thoses two panel below from scene to object)

Annotation 2020-02-01 181523

it would look like this

it does not make a lot of sense, as the object panel is supposed to be per object dependent, byt maybe having everything in one place is just better? instead of “general actions” in properties>scene and object data in properties>object

  • Yes, everything in Properties>Object
  • No, keep blender object panel for object operation and general operations in Properties>Scene
  • No ideas

0 voters

Hey BD3D,
I tested proxify a bit today and so far so good.

My workflow to create proxies is this:

  1. I got a high poly object that I want to proxy
  2. I create duplicate of that high poly and use decimate modifier on that to reduce it to like 0,05 ratio
  3. apply modifier
  4. rename this decimated object to proxy
  5. Use this decimated object as a proxy for original high poly object


Problem is that my workflow is generally linking collections from external blend file to my main project file or linking object from same external blend file and then convert it to proxy(make proxy) to further use for things like particles. And in that case it is not possible to use proxify. Or is it possible to link proxified object?

But generally use of profixy is great and works like a charm.

3 Likes

Hello

Hey BD3D,
I tested proxify a bit today and so far so good.

My workflow to created proxies is this:

  1. I got a high poly object that I want to proxy
  2. I create duplicate of that high poly and use decimate modifier on that to reduce it to like 0,05 ratio
  3. apply modifier
  4. rename this decimated object to proxy
  5. Use this decimated object as a proxy for original high poly object

indeed, you may even create custom lower geometry

And in that case it is not possible to use proxify. Or is it possible to link proxified object?

Linked object are frozen, there’s not much things i can do unfortunately
but the code is open source, if someone want to try and add link support, please go ahead

1 Like

Yep I am decimating it to be able to know what is the original source object but I tried to proxify random simple geometry aswell. Well about linking that would be great but even without it is really solid way to proxy and make your viewport way lighter. Good job :slight_smile:

2 Likes

well in theory, using the decimate modifier would act the exact same as what you just did. but i think there’s some huge workflow flaws with modifiers, as the modifiers seem to be constantly re-evaluating the modified mesh instead of making a cache and using the cache in the viewport

idk need to do some testing to check if this is true

2 Likes

Update Proxify V3

  • now “resurrect proxy” (restore deleted proxy back to the viewport) operator aslo support CTRL&ALT
  • new remove operator in proxy-data UI, that also support CTRL&ALT
  • new interface, forget Properties>Scene, now everything is in Viewport Display
  • “new” active is proxy for all selection operator
  • changed a bit the api, and also added more override options for hide, and resurrect operators

Annotation 2020-02-01 204402

Annotation 2020-02-01 204517

note that the newt ALT for batch selection and CTRL for whole scene support allow functionalities that are also available within “General Operations” but i think that overall, choice is a good thing for the user

Proxify V3.py (57.8 KB)

2 Likes

Hi, that is a very interesting addon.
What is the work-around making a proxy for an animated character?

Is it like: wait with animation of high poly > make a low poly version > parent low poly to same armature of high poly (automated weights) > Animate High poly
Then in the addon: Select high poly > set proxify target to low poly > Set status: on ?

1 Like

Hi thanks

I need to create a tutorial on that.
Basically it’s like the non animation method

  1. select proxy object with the pointer
  2. toggle proxy

But there’s a nuance with the modifier stack (by default it’s automatically turning off the modifiers while on proxy mode, you don’t want this with armature modifiers of course) so there’s another step which is

  1. uncheck « disable modifiers when proxy is called »

And of course to drive the modifiers we need valable Vgroups, so either you can re assign the vgroup to the new proxy mesh data, or the proxy itself was a decimation, which will keep the vgroup mesh data intact

Reading Fallirini’s post it came an idea.

What if your addon takes care automatically of creating a proxy object?.

Let me explain further. Let’s say you have a high poly object, then when you click on create proxy, internally the addon duplicate that high poly object add a decimate modifier and apply that modifier, so the user don’t have to do anything to get a proxy.

I hope it makes sense.

Yep that would be way easier, but common workflow with this kind of proxy system is this:

  1. You have a high poly mesh.
  2. You create a proxy out of this mesh (let’s say export it).
  3. This proxy is saved as external file to a location you select and it has a it’s own format type (let’s say “test.blendproxy” in this case)

Here comes the funny part
4) Render engine (the one that support this type of a proxy system) can create a new type of object called proxy and has a properties similar to what BD3D did with proxify (like turn proxy on/of etc). It also has a property that has like 3 or 4 options to display proxy (full mesh, limited faces, only dots, only box) and you can choose whenever you want from each option.
5) Now when you create this new type of object (proxy) you can assign your external proxy format object (the one we created in 2) and 3) )
6) Proxy object is displayed the way you want and it does not take any size in your blend file, you can assign material to it, particle it, move it, scale it. Further more this type of proxy file is optimized the way it loads in memory when you hit a render and so it actually eats less memory than original high poly mesh (the one you created proxy out of)

Now I am not a developer but even I realize that this is not something you can create with a blink of an eye, but that is the way modern render engines handle proxies. So proxify addon that @BD3D created is great and it is better than all other options we have in blender (Cycles).

I agree that we should have proxies supported by cycles, but that’s a task for cycles developers. I don’t think it can be done using python. It’s surprising that nobody from studios using blender hasn’t felt the need for this.
At work we use corona and we often convert whole interiors to proxy (ie groups of objects, not one by one) to keep viewport responsive. What’s important is the ability to convert proxy back to editable objects, because sometimes you need to adjust them.

Yes both Corona and V-ray does have powerful proxy system implemented (well one Chaos Group) and yes you are right it is a task for Cycles itself (that’s why I added Cycles at the end). By the way Chaos group is developing proper V-ray for Blender (current Blender) atm and it has been guessed to be released in like a half a year and I suppose proxy system (the one I mentioned above) will be part of it.

To question why this hasn’t been asked for yet is probably fact that Blender (with Cycles) is not that common for top level archviz production (YET). Corona is used mainly in Archviz and has been even developed as such if I am not mistaken (It doesn’t even have option to GPU render if I remember correctly).

At the moment in Blender (CYCLES) you simply have to do with linking and instancing and to be honest it is more than possible to work with it even in heavier scenes, but yes having a proper proxy system for Cycles would be awsome and I suppose that it will become frequent request soon enought (since a lot of studios are coming over).

Well

at this point it’s not a proxy system anymore but a new “display as decimated” option or “display with hidden verteces” option, or even “display as point cloud” which i agree is really nice

I agree that we should have proxies supported by cycles, but that’s a task for cycles developers.

i try to be loud about it byt so far no response…

What’s important is the ability to convert proxy back to editable objects, because sometimes you need to adjust them.

you can do that easily with Proxify, just hit the toggle button in VIewportDisplay>Proxify>Proxy-Data

1 Like

Yes, I agree totally.
I was referring on more automatic proxy creation, and yes having external references is more than ideal. If I understood right, currently there is no way to make it work in Blender.