"Proxies" for blender 2.8?

Hello

In my quest of having better performances when using Scatter (my particle distribution addon for environment and archviz artists) i tried to experiment with a “proxy” system in blender (with python).
By proxy i mean an approximative low resolution geometry used in viewport only, a necessity for archviz and environment artists,as our only options right now with demanding scenes are bounding boxes and not displaying the assets/particles at all (which is far from ideal).

still don't get what are proxies ? see examples below

"Proxify" is my 2nd attempt with proxies, and it uses an universal concept of meshdata-exchange (basically changing the mesh data automatically if toggle/render/rendered view).

Right now Proxify can:

  • Individually assign proxies in object>viewport display>Proxify with a pointer.
  • Toggle proxies at will.
  • Toggle proxies automatically on rendered view (if allowed)
  • Toggle proxies automatically on final render (if allowed)
  • Support particles systems
  • Support instancing/duplications
  • Support animation (if vgroups assigned for proxy mesh)
  • Batch toggle proxies (on/off/toggle to scene/selection).
  • Batch assign proxies with a naming system
  • Batch remove proxies
  • Batch hide/unhide/store proxies to collection.
  • Protect the data, as the pointer object can be deleted and everything will still work fine.
  • Individual data/options if you’d like to freeze the proxy toggle on rendered view, final render ect…
  • Support for external api, operators are thinked with override args in mind, so that other addon can access Proxify operators easely

ezgif-2-519f011efac0

you will find a new tab in viewport Properties>Object>viewport display>Proxify, where you can choose your proxy object
and another tab in Properties>Scene>Proxify for (batch)toggling everything and other ops.

-> full code available Blender Artist thread

jakub aka carbon2 is also working really hard with “Display as Point cloud” for particles (for scatter) but ideally, everyone need a display as point cloud option as well.

fc91604a3a7b5c73cb11a95a650d3186d04c2a1d

I really hope that our attempts can be discussed a bit by the institute in a meeting one day. maybe @sybren can help, I believe he noticed proxify on twitter

we are working hard on this problem/limitation, but we can’t do much within python reach for point clouds

20 Likes

I think it’s also worth mentioning @fclem here, he is the master with the power to bring this to life at some point :slight_smile:

1 Like

Please leave a comment on the code blog. Animation performance is one of the most important projects for 2020, and I think a consistent way to make proxies is a big part of the solution. I mentioned it in my comment over there:

I don’t think it’s necessary to aim for 60fps in huge scenes right away. I think if those kinds of improvements take some time to develop, it might be easier to offer better tools for optimizing scenes in the meantime. For example, LODs, off-screen culling (especially for particles), and proxy models — this could be handled in the Scene’s simplify settings and/or use a modifier. Tools for profiling performance would be great for tracking down the source of a problem– a modifier, constraint, polycount, etc. and the ability to enable and disable evaluation of certain objects would be awesome- freezing and caching etc.

1 Like

Well i was aiming at performance in general, but in the end this data exchanger system is working also nicely with animation. As for my archviz scenes, this is finally the feature i was missing for creating huge environments without an ever slowing down viewport nor ugly bounding boxe.

3 Likes