Proxify a Proxy system for Blender

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.

Well perhaps now that Blender is getting lots of love fromwell know and big studios. Perhaps know the need for a proxy system can get up the list. But as long as no one ask for this stuff, makes a proper proposal, it will never be added.

I has been asked properly already. It simply doesn’t make up that high in a priority list, what’s more it is a Cycles stuff not Blender itself and Cycles has a lot more things that need to be worked on that for sure will be prioritized over proxy system. If CG really finishes V-Ray port for Blender 2.8+ (proper port) then it will contain proxy system aswell.

Well who knows maybe you are right and it will somehow get into a spotlight but meanwhile let’s be thankful for people like BD3D so we can atleast ease to a viewport a bit:).

1 Like

Proxify_V5 available

freaturing 3 methods of automatic proxy generation (that also work for animation, just disable “automatic hide modifiers when proxy is called”)

Proxify_V5.py (73.8 KB) -

see this twitter thread as example

https://twitter.com/dorianborremans/status/1228108605330776064

4 Likes

FIRE!
Thanks!

1 Like

Beautiful work, now this is how you do it :slight_smile:
I have an error using the stable 2.82 release when I try to use Bounding Cube or Bounding Cone with any object (my case was with Monkey). This is what the console returns:

Traceback (most recent call last):
File “C:\Users\Myname\AppData\Roaming\Blender Foundation\Blender\2.82\scripts\addons\Proxify_V5.py”, line 1834, in execute
prox = prox_bound(ob,self.choice)
File “C:\Users\Myname\AppData\Roaming\Blender Foundation\Blender\2.82\scripts\addons\Proxify_V5.py”, line 1762, in prox_bound
prox.data.materials.append(obj.material_slots[0].material)
IndexError: bpy_prop_collection[index]: index 0 out of range, size 0

location: :-1

Cheers,
Juan

1 Like

Hi
Your monkey don’t have any material slot right ?

Nope, no materials applied.

Fixed, you can redownload V5 added a try except loop

1 Like