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

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.

well we could automate modifiers and apply them but it’s cheap and slow
i already work on proxy automation with 3 different techniques

  • auto decimate to x%
  • auto hide x% of geometry
  • auto turn into simple geometry (cube or pyramid)

the problem is that the two first techniques result cannot be predicted and are highly dependent on the geometry, it the x% need to be chosen by the user

Great addon. But call proxies automatically while in rendered view don’t work if i change to rendered view with hotkey, only with pie menu/toolbar. Blender 2.81/2.82, Windows 8 64 bit.

1 Like

thanks for the report,
official hotkey ? custom hotkey ? pie menu editor hotkey ?

as far as i’m concerned, the official Z menu and header menu is working fine, non official solutions are not working indeed

"don’t work "

i had the same issue with my pie menu editor, it does work. ( it’s just that certain (custom scripted?) approach don’t send despgraph update when switching view, which it should at the first place, so proxify can’t detect despgraph change when pressing the specific non-update approach )

so the solution is really simple:
click on the viewport after calling your non-despgraph update solution

unfortunately there’s not much i can do as the problem doesn’t come from my end

1 Like

It’s default hotkey shift+z 3D View Toggle Shading Type. But type changed from wireframe to rendered:


And thanks, clicking on the viewport helps.

If you edit the linked models, i guees it would be possible to update proxies right?

Use edit linked add > hit shift + \ do the proxy thing and hot shift + \ again. Wouldnt it update proper when using collections. Thats how it should work i believe. Seen daniel bystedt use it this way as well and lits of others

the problem is that the two first techniques result cannot be predicted and are highly dependent on the geometry, it the x% need to be chosen by the user

Why should making proxies be predictable?? Ive never seen them do a predictable job. Only when you use Convex Hull should the shape represent its base form quite close. Doing the weird triangulation thing, i give crap about it how it looks. As long as its small and somehow resembles the original. Otherwise, a proxy beats its purpose. I get the feeling some people want to detailed proxies, which still is useless in some cases.

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

I dont agree this should be used for Cycles. Its not the task for a render engine to modeling functions. It should be a Blender task. That way you can use it on other engines as well and also perhaps export your proxies outside blender

However, i guess you mean tthe render engine needs to have the switch for proxy > hi res and backwards.