2
$\begingroup$

Is there any kind of constraint that works based on object faces instead of the whole object? I am trying to get the arrowhead to move with the face of the cylinder. The cylinder is being scaled by scaling an empty, the cylinder if a child of the empty and I am attempting to use the shrinkwrap constraint to tie the motion of the cylinder face to the motion of the arrowhead.

enter image description here

This technique works for moving the cylinder when the cube scales, but the arrowhead does not seem to work.

Is there a better techinque? A way to "glue" an object to another objects face and force them to move together even when the face is moving due to a scale?

$\endgroup$
1
  • $\begingroup$ Snap constraint, mebe? $\endgroup$
    – TheLabCat
    May 30, 2023 at 19:58

1 Answer 1

2
$\begingroup$

One solution to your problem is '3-vertex parenting'.

When you link two objects by making one the parent of the other, you chain them together so that the transforms of one also apply to the other. However, there are actually different 'modes' of parenting - 'Object' (the default, "normal", method of parenting), 'Vertex' (where the child is transformed based on a single vertex), or '3 Vertices' (where the child is transformed based on 3 vertices of the parent). By using 3 vertices that are representative of a face you can link a child to the transformations of a particular face of the parent.

Setting up such a relationship is a bit more complicated than 'standard' parenting, since youneed to alsospecify the actual vertices that are involved. I can show this using a simple example based on your arrow.

Start with a Cylinder and a Cone, scaled and positioned to form the arrow. Note that these are separate objects (primitives) and are not yet connected in any way.

cylinder and cone

Select the Cone, and, whilst holding Shift, select the Cylinder.

both selected

Note that the outline shows the last object selected - it's important that the last object selected is the object that is to become the 'Parent'.

Hit Tab to go into Edit mode.

edit mode

Unselect all vertices (Alt+A) and select 3 vertices (hold Shift whilst clicking them) of the face you want to act as the 'Parent'. Not that this needs yo be 3 vertices that are representative of the face (not just all on one edge).

select vertices

Hit Control+P to bring up the parenting menu and select 'Make Vertex Parent'.

make parent - 3 vertices

Now come out of Edit mode and your object should be linked to that face.

animation - linked to face

In your specific case, I believe you want the object to be linked to the face but not to vary based on the parent's scale. In which case you can use a trick similar to what you have already done - parent an empty to the face instead of the cone. You can then use Constraints to copy the location and rotation of the empty onto the Cone (with its origin adjusted so that it is on the base of the cone).

constraints

Move the origin of the cylinder so you can control it via its base.

final result

$\endgroup$
2
  • $\begingroup$ Thank you very much! This worked. I had been using the Child-Of constraint because it allowed me the ability to animate. I believe this is not possible with the standard parenting correct? $\endgroup$
    – J Stearns
    Jun 1, 2023 at 21:57
  • $\begingroup$ Correct - ‘standard parenting’ is based on the transform of the origin of the parent whereas using 3-vertex parenting offsets that to use the transform of the plane defined by those three points. $\endgroup$ Jun 4, 2023 at 9:54

You must log in to answer this question.

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