Theres a few aspects to what I am looking for in terms of solution.

We deal with extremely large scenes, and take huge advantage of instancing, dupligroups and particle systems

However, when you have thousands of objects (not particle systems) in a scene... blender starts to go slow.

Our initial idea was to convert the instances / dupligroups over to particle systems... that way its one object which has many instances, instead of many objects.

We have looked into trying to convert dupligroups / instances into a particle system, however... we cannot seem to alter it via the python api (https://developer.blender.org/T48022). Is there a efficient way of storing thousands of objects with locations / rotations without actually having the slowdown that normal objects would have? Is there a way of being able to create non-object instances via python?

  • $\begingroup$ Being that you say "We" i presume this is a team, and that probably means a game? $\endgroup$ – Luka ash Apr 2 '16 at 9:27
  • $\begingroup$ Yes, we as in team. We work in archviz mainly. $\endgroup$ – Carlo Apr 2 '16 at 9:34
  • $\begingroup$ So you find a very big difference in performance between using a particle system and the same system converted to instances? $\endgroup$ – Carlo Apr 2 '16 at 9:42
  • 1
    $\begingroup$ Particle systems give better viewport performance over the same system converted to instances hands down. that is why i am trying to make a particle system out of instances ;) This shouldnt have any performance hit in terms of rendering speed.. just how responsive the viewport is and how commands are. $\endgroup$ – Carlo Apr 2 '16 at 10:14
  • 1
    $\begingroup$ Dupli-group is about as efficient as you can go. A dupli-group is effectively just an empty. I think you can have thousands of empties in a scene without any slowdown. Are you sure you know what is causing the bottleneck? Check the Camera culling option under Scene Simplification in 2.77. Also it would be best to provide some testing scene for profiling. $\endgroup$ – Jaroslav Jerryno Novotny Apr 2 '16 at 21:41

I also work in archviz and would love to hear a solution for this,in my experience having particles does speed up the viewport a little at the expense of slower selection for objects with many particles.

Only alternative I can think of would be using perhaps duplifaces, though you would probably be limited to distributing single objects as opposed to say group instances.

There would have to be a special dummy mesh object where each face would store the location and rotation of each instance, though I am not sure it will bring any viewport performance advantage. You would also probably need a script to create said mesh from existing instances, although creating from scratch would be a little bit easier.

| improve this answer | |
  • $\begingroup$ We explored the dupliface option... The problem we had with duplifaces is that you cannot control the rotation of the normal vector. as in they will all be facing the same way instead of the rotation you are after. $\endgroup$ – Carlo Apr 3 '16 at 2:26
  • $\begingroup$ Well I was making a quick test now and they do rotate with the face, I guess it has to do with vertex index order or something, although results are quite hard to control manually being, kind of a trial and error thing. $\endgroup$ – Duarte Farrajota Ramos Apr 3 '16 at 3:22
  • 1
    $\begingroup$ I believe its not only based off the vertex index but also the vertex order as to how the face was created... I think also it has problems with rotations if multiple objects are involved. $\endgroup$ – Carlo Apr 3 '16 at 8:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.