8
$\begingroup$

When I import dupligroups from an object .blend into my master .blend scene, I can move the transform of the dupligroup parent fine. However, I really miss the ability to snap to other scene geometry.

It appears that the only thing that will snap on the object is the parent empty, but not the underlying dupligroup mesh.

Here is what I get (snaps to the empty containing the group only):

enter image description here

Here is what I want (snaps to the geometry of the mesh):

enter image description here

Is it possible to snap the linked dupligroup mesh to my scene?

$\endgroup$
  • 1
    $\begingroup$ Unfortunately it's a know limitation of the admitedly lacking snapping system of Blender. There are a few workarounds I generally use, I'm out of time write now, but I'll try to answer later if I can. $\endgroup$ – Duarte Farrajota Ramos Sep 30 '16 at 18:34
  • $\begingroup$ Hi Duarte. Can you expand on this? $\endgroup$ – Keller G Oct 1 '16 at 2:28
  • $\begingroup$ Certainly, I'm working on the answer as we speak, just a few more minutes and should be able to post it. $\endgroup$ – Duarte Farrajota Ramos Oct 1 '16 at 2:33
9
$\begingroup$

Blender is unfortunately very limited for use in precision modeling and CAD like operations.

It's snapping tools and precision transforms are very lacking. Dupligroup handling is one of it's many shortcomings, this is a know limitation of the system, you can't really control what to snap to and from with empties.

You can still snap to the linked geometry, but when transforming the empty itself with a dupligroup you can only use the empty's center as base snapping point.

Workaround 1 - Don't link as group, link as object.

If it's just a single object we are talking about link it as an object instead.

After linking make it a Proxy with Ctrl + Alt + P or make it Local with L > Selected Objects.

  • Upside is you get the unexpected benefit of overriding several types of data locally while maintaining the linked geometry, like materials, and even modifiers

  • Downside is it only really works well if it's a single object. (you wont be able to easily add new objects to the linked instance unless you merge them all together into a single bulky mesh.

Workaround 2 - Use a dummy mesh object.

By default when you link a group instance it links through an empty object, which limits it's snapping options. Instead use it as a dupligroup on a 'dummy mesh'.

A dummy mesh is a purpose created unrenderable mesh object that is used solely for the purpose of snapping.
You can custom create it's geometry exactly with only the points you exclusively want to snap to. That will give you a 'custom snapping cage' with only the relevant points for freely snapping to/from.

Just create a mesh object, model it regularly as you see fit, and in the end select all with A then delete all with X > Only faces.
That will render the object invisible to rendering, in theory not weighting down the scene performance, but give you a valid snapping geometry tailored to the specific object.

Then just go to the Properties Window > Object > Duplication > Group and pick the previously linked group.

  • The Downside of this technique is that you have to model extra an snap cage, for each relevant object, it's extra geometry weighting in your scene and slowing the viewport down. Also if you want to add more instances of the group easily you'll have to duplicate the existing mesh, so it always keeps the relevant cage.
  • Upside is you get a custom tailored snap geometry, with exclusively the points you want to snap to/from. Should not affect rendering performance, and it can additionally hold materials for easy overriding if necessary.

enter image description here

| improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ Thanks for explaining this so thoroughly, and outlining alternative options. Too bad Blender doesn't just handle this for you - it has the data to do so! $\endgroup$ – Keller G Oct 1 '16 at 7:54
  • $\begingroup$ Welcome Hopefully it will be improved for the upcoming 2.8. There already have been a few tries that never made it to release developer.blender.org/T45734 $\endgroup$ – Duarte Farrajota Ramos Oct 1 '16 at 12:25
1
$\begingroup$

Instead of creating a cage to snap to, you can just create an empty, snap it to the point you want to move from, select the Doupligroup together with the empty and snap them to the point you want to move to.

| improve this answer | |
$\endgroup$

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.