Particles system doesn't instance nested group duplicating empties (dupligroups)
Closed, ArchivedPublic

Description

Blender 2.74 release

I have an empty that is duplicating a group. I would like to instance this empty as the object of a hair particle system (or as part of a group of object's being instanced). Specifying said empty as the Dupli Object fails to instance the group that is being duplicated by said empty as visible with the object_particles system.

The proposed workflow for instancing a group as a particle hair folicle is to use the duplicating group parameter of the particles system. This is not a sufficient implementation because:

  1. It fails instancing nested dupligroups of said dupligroup as visible with the dupligroup_particles system.
  2. It fails to facilitate the workflow of instancing random dupligroups from a set of dupligroups as provided by the Pick Random implementation. Presumably this is a byproduct of failing to instance nested dupligroups.

Details

Type
Bug
Diet Coke (dlots) updated the task description. (Show Details)
Diet Coke (dlots) raised the priority of this task from to Needs Triage.
Diet Coke (dlots) added a project: BF Blender.
Diet Coke (dlots) set Type to Bug.

I don’t think such recursive dupli instancing has ever been supported at all? Sergey, Campbell, Lukas, what do you say?

Diet Coke (dlots) added a comment.EditedJun 6 2015, 2:30 AM

It may not have been supported at all but dupligroups are the only way to manage object hierarchies and instancing in blender. Dupligroups are the only way to this common object hierarchy workflow:

Root->Descendant->Descendant

As the parent child construct in Blender does not facilitate instancing of object hierarchies.

I strongly urge you to contemplate the fact that dupligroups are a fundamental workflow to object hierarchies and would benefit from the randomization instancing implemented by the hair particle system.

Dupli system is older than groups.
During 2.5x changes, there was a proposal to abandon dupli system but without real idea of another instancing solution.

It is known that there is no good solution for instancing of object hierarchies.

For gooseberry project, an alembic caching library was built for that. But it is more considered as an experiment than final adopted solution.

Diet Coke (dlots) added a comment.EditedJun 9 2015, 10:30 AM

Ideally I'd like to discuss the challenges specifically with instancing recursive dupligroups by the particle system. If you are not refering to object hierarchies in the general sense, please do not respond to #2.

I typed out 2 responses because I am confused but what you are refering to as the Dupli System or Instancing of Object Hierarchies.

#1. If you are refering to
a. Instancing of Object Hierarchies as: implementation of a particle system instancing a recursive Dupligroup.
b. Dupli system as: the particle system's implementation of instancing objects

then one can build a cache of a recursive Dupligroup and instance the cache. I don't know what the problems for which there are "no good solution" are. Please specify.

Perhaps alembic caching accomplishes this as well as additional constructs like IO on the cache. I don't know.

#2. If you are refering to:
a. Instancing of Object Hierarchies as: the object hierarchies caused by nested Group/Dupligroup/Dupliverts.
b. Dupli system as: dupliverts? particle system instancing? I dunno

then:

I don't think a discussion of the totality of the constructs for managing object hierarchies is necessary to address, with regards to this simple issue.

In addition, of the top of my head I can only think of 2 patterns for managing object hierarchies, not a lot of room for discussion:

Parent-child
Grouping/Tagging

Blender uses grouping/tagging. There are some patterns for optimizing invalidation of objects in a recursive hierarchy which are usually implemented in a UI invalidation system.

Dupligroup workflow for building scenes is a little more flexible than rigid parent-object hierarchy because it allows a leaf object (mesh,curve,etc) to be placed into multiple "parents" without having to duplicate the object with alt-d and maintain the transformations for the object.

I think object hierarchy management is a matter of preference and context because removing dupligroups would be unreasonable.

Lukas Toenne (lukastoenne) claimed this task.

I'm sorry to say, but this is not a bug. The particle system just lacks this functionality, but it is broken in so many other aspects that this becomes a drop in the ocean. The reason is lost in time (early 2000's code, don't think design docs even exist), but one problem i can think of is the way particle systems use "counts" to control distribution (which is completely broken btw.). So even if we all agree that the current system sucks, there is no way to fix other than rewriting duplis.

Diet Coke (dlots) added a comment.EditedJun 9 2015, 11:28 AM

I don't see how closing this is a productive action... It is the only place solicit input on the value of this feature.

@Diet Coke (dlots), bug tracker is for issues which we can solve in reasonable time, but particles requires full system re-design. Such projects are going over regular development process and TODO list. Speaking of which first item in the TODO list is "Refactor particles" :) (http://wiki.blender.org/index.php/Dev:2.5/Source/Development/Todo/Tools#Particles)

So don't worry, closing the report does not mean particles will never be improved, it'll just happen outside of the bug tracker work.