2
$\begingroup$

Apart from testing it myself, I've seen a few posts here and there, including from Sketchup users like me, sort of circle around this topic but never ask this question directly.

How can I overcome these problems in DupliGroups or Collection Instances?

  1. moving its origin seems to require moving to World origin (and using up a layer for clarity) <=> linked meshes have their own local origin which I can move data around in Edit Mode (easy enough)

  2. It is impractical to link up DupliGroup data to previously created meshes because the origin mismatch as above, and the mesh data that remains in it and needs to be deleted somehow

  3. Linked meshes don't have the above two problems (can be 'blocked in' and then detailed up all at once) but I can't add objects to them, only faces. Say I'd like to add handles as linked meshes, because handles are used elsewhere in the model too.

Here's a shot

How feasible would it be to make a linked object type with deeper hierarchy?

Say an object that would look at its children and simply make every other instance have the same children. It would also mean dragging and dropping in outliner would be the simplest way to manage it by the looks of it.

$\endgroup$
1
  • $\begingroup$ I see, I really should have asked two questions since one is a use question while the other a programming question. $\endgroup$ Feb 20, 2016 at 11:00

1 Answer 1

5
$\begingroup$

The Dupligroups or Collection Instance workflow in Blender are indeed a bit unorthodox, and somewhat different compared to other applications, but not any less capable, having in fact a few advantages.

TL,DR

The gist of it is that in Blender group definition and group usage are two separate and distinct procedures all together. This means you can't directly edit an instance of a group/collection, nor can you generally define a group directly from its constituting parts at target location.

Explanation

Collection Instances or (Dupligroups for Blender pre 2.79) are a way of creating bundles of independent objects that are grouped together and can then be deployed as a single object or stored as a library for later uage. In most ways similar to AutoCAD Blocks, Sketchup Components, or 3DsMax Groups.

Unlike most other programs however, group definition and group use are completely separate in Blender, that means you define a group with a set of included objects but they aren't immediately 'converted' into an instance of that group in place, nor is a group instance directly created from them at present location.

They always remain as a separate editable "originals" you can go back to to modify, but never directly use nor actively participate in your actual scene. Think of it like a permanent Block Editor in AutoCAD, where you click Edit and a separate environment is opened to modify your block in isolation.

In much the same way an instance of that group is generally an independent object chosen specifically as duplicator that generally has no other geometric data or geometry associated with. The group/collection instance is also not editable, merely a dummy used to mirror what was defined above.

Suggested Workflow

  1. In a work file (or even a separate 'library' file if you wish to reuse them later or in different files or across projects) you may create a new separate scene exclusively for "group definition" where you create your "group originals". In 2.8+ with the advent of Collections, you can alternatively create just a separate "master collection" (called "Instances" for example) inside which you will place all your "originals" and define your groups or components. In your particular case that would be where you would place the window frames.

Group Definition Scene

  1. Those objects can then be grouped together by moving them into individual sub-collections (one for each group or component) with the M key or by drag and frop in the outliner (use Ctrl+G for 2.7# and earlier). They can belong to several distinct groups/collections at once even (say one same window with a handle, other with hinges, and all other possible combinations) use ⇧ Shift + M to link an object to a collection, this is distinct operation from moving because at the end the object will be included in multiple groups at the same time.

  2. Each group/collection has by default it's own origin at the scene's center (coordinate $0,0,0$) but this can be adjusted to accommodate several group definitions in the same scene while keeping their individual origins in a convenient place relative to their included objects. If you go to the Properties Window > Object Tab > Collections (Groups for pre 2.7#) you can set a different origin for each group (use the option Set Offset from Cursor for easier adjustment).

Group's origin

  1. You can also create nested groups, or groups instances inside groups if you wish to have several modular reusable components that are repeated and combined often in different ways.

Here is a hypothetical collection organizational hierarchy:

Library.blend
 ├ Scene: Windows
 │└ Collection: Scene Collection
 │ ├ Collection: Windows
 │ │├ Collection: Window Tall
 │ │├ Collection: Window 0.6m White
 │ │└ Collection: Window 0.6m Wood
 │ └ Collection: Doors
 │  ├ Collection: Door 0.8m Left
 │  ├ Collection: Door 0.8m Right
 │  ├ Collection: Door 0.8m Right Handle
 │  └ Collection: ...
 └ Scene: Furniture
  └ Collection: Scene Collection
   └ Collection: Seats
    ├ Collection: Couches
    │└ Collection: Chesterfield
    ├ Collection: Chairs
     └ Collection: ...

Adding instances to a scene

In your actual work scene where you want to use your group instances just access the add menu Shift+A and choose your group from the last menu entry Group Instance. This will list all available instances (both local and linked) in a searchable menu.

Group instances are generally used from an Empty type of object by default, that doesn't have any mesh data or geometry of it's own. You can however force instance from any other object type by manually modifying the Dupligroup property. This is useful if you want to create a non renderable dummy geometry as helper object for snapping snapping or as visual aid. For 2.8 instancing is exclusively done from empty objects, instancing from other object types has been deprecated.

With the advent of Geometry Nodes, you can again create a setup that instances collections from any object type, including using arbitrary geometry features as isnatncing points.

Adding objects to existing groups

  1. Select all newly added objects you want to add to an existing group, then Shit-select an object already in the desired group at the end, making sure both remain selected, but the object already in the group remains the active one.
  2. Then press Ctrl + L > Groups to match the groups from active to all selected objects.

Advantages and Disadvantages

By keeping group definition and group use separate you gain some and you loose some.

  • You can't edit instances in place.

  • You can't really add an object to a group directly through it's instance, you always have to go back to the original and do it there; changes propagate automatically to all instances.

  • You do avoid trouble with object offsets, since they were safely preserved and well defined at source.

  • Editing in cluttered scenes can be made easier by separating the two actions.

  • Same objects can participate in any number of groups/collections saving some resources.

  • Creating groups with similar features or variations is made more modular and less repetitive.

Possible workarouds exist to mitigate the limitations, including several existing addons for editing Collection Instances in place and mimicking other software solutions for editing groups or "opening and closing".

$\endgroup$
6
  • $\begingroup$ Thanks! 1) How do you deal with geometry data after using a "dummy geometry for snapping"? Just leave it in but set to not renderable? 2) How do you nest dupligroups? I tried selecting a group in 3dview along with a new single object, then Ctrl+G, but that gives me just another non-hierarchical group (so the new group is a direct 'parent' of all of the items, not nested) $\endgroup$ Feb 20, 2016 at 11:13
  • $\begingroup$ Aha! Re. nesting: I was selecting the green outlined objects, not a group instance; and it seems in order to do it, you have to instantiate the group that's going to be nested -> add objects -> group new objects with the instance of old group. Therefore, you cannot make a nested group working just on master objects - correct? This means there are going to be duplicates (masters and group instances) in the location where you are preparing your nested group - correct? $\endgroup$ Feb 20, 2016 at 11:39
  • $\begingroup$ For "dummy geometry for snapping" I generally like to model it regularly then select all press X for delete and choose "Faces only" option that will leave edges and vertex to snap to but no actual renderable geometry. You can also extrude single vertex that will create a "edges-only" wireframe-like mesh for snapping purposes. $\endgroup$ Feb 20, 2016 at 20:08
  • $\begingroup$ For true nested groups you are probably better making them out of group instances instead of original objects, (although both methods can have advantages of its own) since updating the child-group masters will also upgrade them inside all "nested group" instances propagating changes automatically. You can break any group instance into it's sub objects at any time anyway by pressing Shift+Ctrl+A to "Make duplicates real" if you wish to break any relationship of groups $\endgroup$ Feb 20, 2016 at 20:14
  • $\begingroup$ Can you explain how you do the latter - a nested group without having to create an intermediate instance? I wasn't able to to it, and 1 step less in the process it always nice. Specifically I wasn't able to do it, because there is no way to select a group as one piece in the viewport, instead I appear to select the group's constituents individually and the resulting 'supergroup' is not nested at all. Cheers again! $\endgroup$ Feb 23, 2016 at 9:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .