For the moment, I won't add something like this in Mask Avenger, as it is difficult to make it "universal". Some users will need it this way, some others another way...
But from what I read in your description, I think you could make it simpler.
First, in Mask Avenger, you can switch from 'Vertices & Tangents' to 'Vertices only', it'll be easier.
Now, let's say you add an Adjustment layer on top of your composition. On this adjust layer, simply add 4 'Circle' effects (you'll find them in Generate -> Circle) Set their transfer mode to Normal. You'll probably want to set their Edge parameter to Thickness.
Now, in Mask Avenger, just paste this expression in the point parameters:
ind = thisProperty.propertyIndex/3; thisComp.layer("Adjustment Layer 1").effect(ind)(1)
Instead of pasting one by one, you can also select 'Type expression' in the 'Scripts & expressions' popup list of Mask Avenger, and paste this expression in the window that will open.
With this example, you avoid Nulls, and get a 'User interface' very similar to Puppeteer.
Wow! That is too awesome. I wouldn't have thought of that. Like I said, I have limited scripting skills so in the first line. I don't know what number that "propertyIndex/3;" will spit out.
But other than, this opens the door for more ideas.
Thank you so much. I will be purchasing this today.
I'm loving your plugin thus far, but I had a quick question. I'm developing my own rig using nested Shape Groups within a single Shape Layer and wanted to know how I could obtain the Global position of a nested Shape Group. I'm trying to use the toWorld or toComp functions but those methods don't seem to work within Shape Layer contents.
As an example, lets say I have a Shape Layer called Controls. Within the shape layer, I have 2 Shape Groups, Group A and Group B. Within Group A, I have 2 other groups, Group A1 and Group A2. The position values of Group A1 and A2 are relative to Group A. I'm trying to convert this value to either a World position or Comp position.
If I can obtain this number then I can link each Node generated by Mask Avenger to the individual Shape Group regardless of how it's parented/nested.
I've got a question about how Mask Avenger chooses to position points for Shape Layers. As I'm learning how to use it, I've noticed that the generated points don't always line up with the actual shape layer. The points will be offset from with the actual vertices of the shape. Especially if there's multiple shapes in one layer. I do see that the anchor point for the Shape Layer itself plays a part in where the generated points are located. I'm seeing that the anchor points for the layer itself, has to be centered to the individual shape. This works flawlessly for 1 single shape, but becomes a problem with multiple shape in 1 layer.
For instance, I created a simple character in Illustrator and imported this in to After Effects. I then converted the Illustrator layers into Shape Layers. One of the Shape Layers is the body of the character, which contains Nested Groups for various parts. Depending on how many actual shapes exist within the Shape Layer, when I apply Shape Avenger to it, I'll get "X" amount of Mask Avenger instances in the Effects Panel. This part is OK as it is the expected behavior that's been outlined in the manual.
The only part I don't understand is why the generated points for some of the Nested Shapes are offset from the actual shape itself. To further investigate, I duplicated the Shape Layer for the body and isolated each part into its own Shape Layer. The anchor point for each layer was then center. Once I applied Shape Avenger to each individual Shape Layer, the generated points show up exactly where I would expect them.
Essentially, I'm trying to keep the Time Line window from being cluttered, by using as few layers as possible. Most layers would be Shape Layers that contain multiple Shapes. So instead of 5 Shape Layers to describe the characters body, I could use 1 Shape Layer, with 5 Shape Groups. Once Shape Avenger has been applied to this single layer, I can proceed to rigging the points for animation.
In the instance of using a single Shape Layer, with multiple Shape Groups, what do I need to do in order to have Shape Avenger place all the generated points exactly where it's corresponding vertex is located? Or does the plugin not work this way?
I am very interested in buying this amazing plugin. However, I tried the demo version and I found that I am not able to see the real time changing I make when I drag the null controllers, unlike the demonstration in the demo video. I wonder it is the limitation of the processing speed of my macbookPro[OSX 10.9.5 2.6GHz Intel Core i7] AECC2014 or it is just the limitation of the demo version. If it is a issue only happens in the demo version, I am dying to buy the plugin.
Also, if there is any way I can get the Point parameter by setting a certain Angle
parameter that would be terrific!
the demo version is limited to 1 second, so if you wanna see the changes in real time, you have to do it in the first second of the timeline. Also, changes are not exactly in real time: the keyframing process is slightly delayed (due to AE CC architecture), but it's usually pretty fast (depends on number of vertices).
Now, I'm not sure I understand what you mean about Angle and Point parameters... If you use Nulls, you can rotate the Null controlling one vertex, and the tangents will follow.
I see. This delay is due to expressions. When the Mask is modified by expressions (which is the case with Nulls) AE allows the plugin to modify the shape only after the mouse is released.
That's why I've included the Mask preview, so you can see it in real time, before the plugin actually modifies the mask.
Now, for Mask reader: when you use it, you get a point parameter (position along the path) and an angle parameter (direction of the path). You can use these infos into expressions to do what you want. It involves a bit of trigonometry... If you have hard times with it, you can open a support ticket and send me an .aep file with what you try to achieve, I'll have a look at it.
Thank you for the information. So, in this case, how do I activate the Mask preview?
Also, I thought there would be scripts inside Mask reader which allow me to reverse the equation easier with shorter expression. Maybe it's time to exercise my brain.
You'll find it under the name 'Show 2D mask' (my mistake, I thought I named it mask preview) :-)
Actually on your gif, it is visible, it is the thin purple line (but on red solid it doesn't contrast that much). It uses the same color than the mask itself, so you can change it if you want.
Again, if you need some help on the expression, just send me your project, I'll be happy to give it a try.
Thank you for the detailed explanation. I see the 'Show 2D Mask' function is worked by subdivision. However, I hope I can see the colour filled deforming shape when I am holding my mouse just like what happened in 'Null Controllers' demo video. It would be wonderful if I can see how it looks exactly when I am dragging it.
Secondly, actually, what I hope to achieve on "Mask_Reader" is automatically given " Point 1" when I am controlling the "Angle 1". In other words, I hope I can reverse the formula. I tried to find out the coordinates on a cubic curve by ' % of path ' by expression just like what "Mask_Reader" did. I hope I can find the angle of tangent by derivative so I can reverse everything after I know how they works.
Let's take an example, if you set an angle parameter with 90°, you want to know coordinates of a point along the path which slope is 90°? If that's what you try to achieve, sorry but I don't think it's possible (infinity of solutions).
If not, the best would be to open a support ticket and send me a file where I can see what you need.
After the BAO MA has baked the keyframes, is there anything that would make mask with BAO MA slower than regular masks? I'm just wondering how heavy BAO MA is to the computer.
PS. Will there be Mask Avenger 3 anytime soon. Obviously at the moment I have no idea what that would bring to current version, but just asking
after MA has baked the keyframes, the project is almost as fast as if there was no effect at all. It is performing computation only when you modify one of its parameters.
And for the moment, there is no MA 3 coming... I don't know what I would add either ;-)
after MA has baked the keyframes, the project is almost as fast as if there was no effect at all. It is performing computation only when you modify one of its parameters.
And for the moment, there is no MA 3 coming... I don't know what I would add either ;-)
Cheers,
François
Great!
I noticed that if you choose MASK PATH: LAYER and then choose NONE the effect disappears from Effect Controls but you can still find it from the layer.
What is the right way to work with BAO MA whe nyou add vertices to the mask? I noticed that you can add vertices and MA updates if you do something.
I'm havent had need for 3D masks, but I'm figuring out if that is because there havent been 3D masks available =D If that is the case, I'm going to purchase this .
I noticed that if you choose MASK PATH: LAYER and then choose NONE the effect disappears from Effect Controls but you can still find it from the layer.
In fact, the effect doesn't disappear, but the Effects window scrolls down when it refreshes. If you scroll up, you'll see the effect.
What is the right way to work with BAO MA whe nyou add vertices to the mask? I noticed that you can add vertices and MA updates if you do something.
You're right, the effect does update when you add/remove vertices. The only thing that can happen is the same than above, the Effect window scrolling down unexpectedly...
I'm havent had need for 3D masks, but I'm figuring out if that is because there havent been 3D masks available =D If that is the case, I'm going to purchase this .
Generally speaking, Mask Avenger does not affect the render of the layer. It just modifies the mask and you can apply any kind of effect on it.
I think trapcode 3D stroke handles motion blur, otherwise, you could also use the native stroke effect and then use an 'extra' motion blur plugin (like Force motion blur or Realsmart Motion blur).
Hi, checked demo version, after converting shape layer, there is no null layers for each tangent only general controls from the plugin. Is it limitation by the demo - not generating control nulls?
the limitation of the demo is it bakes only 1 second of animation. If you want to create Null controls, you'll find it in the 'Scripts & expressions' popup menu. Also, if you wanna control tangents too, make sure you've set the plugin to 'Vertices & tangents' mode.
Can you please explain in detail about the controls "Interpolation Modes" and "Anchor Point" ??
The Quick Start Guide video, and the user guide, do not explain these in full. In fact I'm confused at the basics of these functions?
Do they have something to do with keyframe interpolations such as Easy In, Out, Ease, etc?
Or are they about the in-between change (i.e when the Mask is changing from one shape to another)? And this change is exclusively using Free Transform?
Why do gravity have something to do with all this?
I tried following the Quick Start Guide using the exact same star shape, and it doesn't show any difference between "Standard", "Gravity", and "Anchor Point". The star shape gets shrinked all the same, no volume preservation, even after I pressed the Bake update button and purged the RAM.
"Interpolation modes" act on geometry, not on easing.
They affect the position of each vertex between 2 keyframes.
In "Standard" mode, each vertex will follow its own path. Default path is straight, but you can also use bezier path (to do so, open your layer in the "Layer panel").
"Smart" modes will compute each vertex according to the whole mask shape. It means the mask shape will keep its proportions during interpolation.
You can have a look at the quickstart video, at 2.00. It shows the difference between Standard and Smart.
There are 2 different "Smart"modes:
_"Gravity center": it computes each vertex position according to the mask shape's gravity center (or centroid). Here's a link if you want to learn more about it.
_"Anchor point": it computes each vertex position according to Mask Avenger's Anchor point parameter. It acts just like any layer's anchor point.
If you want to see the difference by yourself, you can do like this (and like in the quickstart video at 2.00):
1_Use 1 mask with Mask Avenger.
2_Set keyframes at 0:00, and rotate your mask 45° on the left side.
3_Go at 2:00 in the timeline and rotate the mask 90° on the right.
If you use the standard mode, the mask will be smaller as it gets close to 1:00, then gets bigger again while approaching 2:00.
Now, if you switch to "Smart (gravity center)", you'll see that your mask will keep the same "size" during interpolation, and it will rotate around its centroid.
If you switch to "Smart (anchor point)", you'll see that your mask will keep the same "size" during interpolation, and it will rotate around the Anchor point parameter.
Now, if you still have issues and see no difference, can you open a support ticket and send me your project? I'll try to see what's going wrong.
I kept getting error info lately after upgrading to Mac Catalina "Mask_Avenger.plugin is damaged and can't be opened" and "Couldn't find main entry point for Mask_Avenger.plugin(48::72)". I tried on both AE CC 2018 and AE CC 2020, and got the same thing. Do you know what's happening?
I kept getting error info lately after upgrading to Mac Catalina "Mask_Avenger.plugin is damaged and can't be opened" and "Couldn't find main entry point for Mask_Avenger.plugin(48::72)". I tried on both AE CC 2018 and AE CC 2020, and got the same thing. Do you know what's happening?
thx,
Wolf Tang
Hi,
I think it's related to Catalina not allowing the plugin because it was compiled before Mac changed it's security policy. I need to re-compile it.
Can you open a support ticket? This way I'll send you a new version soon and we can see if it fixes the issue.
Sorry for my newb question. (I'm a complete AE novice)
In one of my projects, Im animating a logo (hidden), which being reveal from bottom to top, when filled by a droplet, making it reveal with masks, and the top of the "liquid" is a couple of waves, which was animated using wave warp effects.
My goal was to export this using bodymovin to use as lottie file..
As I've learned the hard way, I couldn't convert the wave warp effects to keyframes for export...
After my long winded explanation, my question is this... with this plugin, could I export a similar animated wave (flowing for example, from left to right) using masks, and exporting them as keyframes for a lottie file?
Sorry for my newb question. (I'm a complete AE novice)
In one of my projects, Im animating a logo (hidden), which being reveal from bottom to top, when filled by a droplet, making it reveal with masks, and the top of the "liquid" is a couple of waves, which was animated using wave warp effects.
My goal was to export this using bodymovin to use as lottie file..
As I've learned the hard way, I couldn't convert the wave warp effects to keyframes for export...
After my long winded explanation, my question is this... with this plugin, could I export a similar animated wave (flowing for example, from left to right) using masks, and exporting them as keyframes for a lottie file?
Hi!
if your wave is animated with a mask, then Mask Avenger can for sure 'bake' the animation, meaning turn it to keyframes. To make sure it fits your needs, the best is to try. The free demo version will let you keyframe your mask in the limit of 1 second of animation. At least, it will let you know if this is a good method or not.
But from what you describe, I understand that your masks don't actually move, instead it's the Warp effect that distorts the image... In this case, Mask Avenger won't help.
I cannot say for sure about Bodymovin, as I've never used it. But feel free to ask them, I'm sure they'll be happy to answer your questions. And their advice will be probably more useful than mine in this case :-)
I would like to understand if this plugin can solve this problem.
I have a mask track that comes with the keyframes already applied by MOCHA.
I would like to read the mask data with a single null instead of applying a null for each vertex of the mask. it's possible?
Hi,
from what you describe, Mask Avenger seems to be the right tool.
When you apply Mask Avenger to your mask, it gives you one point parameter per vertex (and 2 per tangent if you select this option), all inside the effect, right on your layer.
To make sure it fits your needs, just give it a try with the free trial version. It is limited to 25 keyframes, but you will know if it fits your needs.
Hi I tried to use the trial before buying it. But in Apple Silicon and After effects beta it doesnt' work. It shows in the menu but the plugin can't be used
as far as I could try it, Mask Avenger is compatible with AE CC 22. So the issue must come from something else. If you're using Apple silicon, you need to download the latest version of Mask Avenger.
But from what I read in your description, I think you could make it simpler.
First, in Mask Avenger, you can switch from 'Vertices & Tangents' to 'Vertices only', it'll be easier.
Now, let's say you add an Adjustment layer on top of your composition.
On this adjust layer, simply add 4 'Circle' effects (you'll find them in Generate -> Circle)
Set their transfer mode to Normal. You'll probably want to set their Edge parameter to Thickness.
Now, in Mask Avenger, just paste this expression in the point parameters:
ind = thisProperty.propertyIndex/3;
thisComp.layer("Adjustment Layer 1").effect(ind)(1)
Instead of pasting one by one, you can also select 'Type expression' in the 'Scripts & expressions' popup list of Mask Avenger, and paste this expression in the window that will open.
With this example, you avoid Nulls, and get a 'User interface' very similar to Puppeteer.
Hope it helps!
François
for info, 'propertyIndex' is the index of the parameters in Mask Avenger.
The list goes like this:
Mask_Path -> 1
In Tangent 1 -> 2
Point 1 -> 3
Out Tangent 1 -> 4
In Tangent 2 -> 5
Point 2 -> 6
Out Tangent 2 -> 7
and so on... This order never changes, even if tangents are invisible.
So propertyIndex/3 gives you for each point: 1, 2, 3, etc... which is the order of circles on your adjustment layer.
Cheers,
François
You can do it with a Puppet tool instead of Circles.
Just make 4 pins on your adjustment layer, then disable the Puppet effect (important!)
Now, you can replace the expressions in Mask Avenger by this one:
ind = thisProperty.propertyIndex/3;
thisComp.layer("Adjustment Layer 1").effect("Puppet").arap.mesh("Mesh 1").deform(ind).position
This method is pretty nice, cos' you see all your points at once, using Puppet tool's interface.
Cheers,
François
Hi François,
Thank you for the detailed explanation. I see the 'Show 2D Mask' function is worked by subdivision. However, I hope I can see the colour filled deforming shape when I am holding my mouse just like what happened in 'Null Controllers' demo video. It would be wonderful if I can see how it looks exactly when I am dragging it.
Secondly, actually, what I hope to achieve on "Mask_Reader" is automatically given " Point 1" when I am controlling the "Angle 1". In other words, I hope I can reverse the formula. I tried to find out the coordinates on a cubic curve by ' % of path ' by expression just like what "Mask_Reader" did. I hope I can find the angle of tangent by derivative so I can reverse everything after I know how they works.
A=thisComp.layer("Medium Orange Solid 1").effect("Mask_Avenger")("Point 1");
B=thisComp.layer("Medium Orange Solid 1").effect("Mask_Avenger")("Out Tangent 1");
C=thisComp.layer("Medium Orange Solid 1").effect("Mask_Avenger")("In Tangent 2");
D=thisComp.layer("Medium Orange Solid 1").effect("Mask_Avenger")("Point 2");
T=thisComp.layer("Medium Orange Solid 1").effect("Mask_Reader")("% of path for point 1")/100;
x=A[0]*Math.pow((1-T),3) + B[0]*3*Math.pow((1-T),2)*T + C[0]*3*(1-T)*Math.pow(T,2) + D[0]*Math.pow(T,3);
y=A[1]*Math.pow((1-T),3) + B[1]*3*Math.pow((1-T),2)*T + C[1]*3*(1-T)*Math.pow(T,2) + D[1]*Math.pow(T,3);
[x,y]
Then, I struggled to find the angle of tangent :-(
I just hope "Mask_Reader" can give me the coordinates of a segment when I am controlling the angle. It will make things so much easier.
Thank you for all your assistance.
is there a way to move multiple points at once?
Great!
the limitation of the demo is it bakes only 1 second of animation.
If you want to create Null controls, you'll find it in the 'Scripts & expressions' popup menu.
Also, if you wanna control tangents too, make sure you've set the plugin to 'Vertices & tangents' mode.
Cheers,
François
Old masks are still active, but I can' t use the plugin anymore right now
https://www.dropbox.com/s/247ln4h6ixyqwr7/Screenshot 2022-04-16 at 21.55.31.png?dl=0