2
$\begingroup$

I'm using Blender to do some 2D, shape-based animation.

enter image description here

Everything you see here is a Bézier shape. To animate the mouth and eyes independently, I add holes to the head shape and then stack the eye and mouth parts below it with an orthogonal camera.

enter image description here

This works OK, but it's not perfect. For one, I have to make sure that none of the inner shapes peek out from behind the head shape. I also have micromanage the hole shapes whenever I change the outer head shape, e.g. to prevent edge contact and self-intersections. Instead of making holes, I wish I could simply add a mouth-shaped mask to the mouth group and then animate the mask independently, but it seems impossible to do this. I know that I could convert the paths to meshes using Alt+C and then add a boolean modifier, but this would no longer allow me to modify the control points. I've also seen approaches that use the compositor to create masks, or that use render layers to create portals, but they all seem far too heavyweight for use as simple masks.

Is there any way I could apply a Bézier mask to a group of shapes in Blender?

$\endgroup$
1
  • $\begingroup$ Apart from compositing, there is nothing like masks in Blender As far as I know. Being a 3D program there is no concept of masking anything except for render layers. Is your background always blue, or at least flat colored? You could use a blue mask around the yellow object to make sure nothing "got out". $\endgroup$ Commented Mar 21, 2017 at 5:32

1 Answer 1

2
$\begingroup$

One thing that could work, or at least give you inspiration, is adding control points hooks, perhaps, I tried this setup:

enter image description here

Here I created two stacked bezier shapes, the upper "Holed" similar to yours.

Then I selected each upper shape control point, and created a hooks to a new empty.

After that I hooked also lower shape control points, one by one, to the nearest empty created before.

Note: here the lower shape control points had same x/y position than the upper "hole" ones, so it was easy, you may need to arrange things differently (more "safely") to allow different setups to work...

See how it works:

enter image description here

And, from the top view:

enter image description here

Here is my example .blend (sorry, had to edit your question and remove accented char from the title to get the url accepted by the hosting service)

Hth.

$\endgroup$
9
  • $\begingroup$ That is super useful, thank you! Will make dealing with the mouth and eyeballs a whole lot easier. $\endgroup$
    – Archagon
    Commented Mar 21, 2017 at 8:40
  • $\begingroup$ Although, in practice, having to deal with the control point handles manually might make this technique more trouble than it's worth... (For example, I would need to manually ensure that the handle points and the control point form a straight line.) $\endgroup$
    – Archagon
    Commented Mar 21, 2017 at 23:21
  • $\begingroup$ Maybe I don't understand... what you mean by "form a straight line"? You can add hooks automatically on the exact CP coordinates: in edit mode, select the CP and press CTRL-H => new object. $\endgroup$
    – m.ardito
    Commented Mar 22, 2017 at 7:25
  • $\begingroup$ Each Bézier control point has two additional handle control points, which can be modified independently to change the curvature. Usually, they form a straight line. If hooks are added to these handle control points as well, they need to be micromanaged. Your approach works great if the control points are in "Automatic" mode, as they are in your sample project! $\endgroup$
    – Archagon
    Commented Mar 22, 2017 at 7:42
  • $\begingroup$ Ok, I understand better now. I think blender has not tools that give you such level of control on multiple bezier shapes... I also tried a subdivided lattice object deforming both shapes through modifiers, but that acts on the overall shape, not on CP's individual handles for sure, too... $\endgroup$
    – m.ardito
    Commented Mar 22, 2017 at 8:10

You must log in to answer this question.

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