Copy link to clipboard
Copied
I have a semi complex idea that I am trying to work out. I am not very good at expressions/scripting after effects, so bare with me as I try to explain this. I will provide the project file as well so that you can check it out and hopefully help me with this.
So I am trying to make a mouth shape rig for character lip-syncing animation. I have 15 different mouth shapes, that I created in illustrator, that all use the same amount of shapes, with each shape using the same amount of vertices between all 15 mouths.
The shapes are -
Lips (a stroked path, 8 vertices)
Top Teeth (a filled shape, 8 vertices)
Top Gums (a filled shape, 5 vertices)
Tongue (a filled shape, 8 vertices)
Bottom Teeth (a filled shape, 8 vertices)
Bottom Gums (a filled shape, 5 vertices)
Throat (a filled shape, 8 vertices)
I am using the "Throat" as a mask for all of the other shapes, excluding the "Lips". The "Lips" and "Throat" have nulls connected to each vertice, and the "throat" will be a mask for all of the other shapes, excluding the "Lips". the "Lips" nulls will drive the entire animation, revealing the other shapes as the lips move from one mouth shape pose to another.
The problem I am trying to solve is this - I want each "Lips" nulls position to be tied directly to a slider/UI element so that I can easily move from one mouth shape pose to another without having to individually keyframe each Null object.
Here are some of the ways i've tried to accomplish this -
I pre-comped each mouth shape, added nulls to each of the vertices for the "Lips" and "Throat" shapes and then used this this expression connected to a null that sits outside of the individual mouth shape comps to drive which comp is displayed.
layerNum = 1
control = comp("compname").layer("layername").effect("Slider Control")("Slider");
if(control == layerNum)
{value = 100;}
else
{value = 0;}
This way mostly works, but it creates over 100 null objects inside this project, which makes it hard to give to other teammates whose PC's can't handle massive projects like mine can, which would force me into being the only animator on this project haha. I also don't know how to make the slider "Snap" to whole numbers which slows down animating because we have to type in the number for each mouth shape. Thats not really the biggest deal, but if there is a way to have the slider snap to whole numbers that would be fantastic.
I've also tried combinations of the plugins "DUIK" and "Joysticks and Sliders" to make this work, but nothing has come of it in a way that makes this easy to animate.
Copy link to clipboard
Copied
Have you tried adding toFixed() to the slider value? Have you considered using an Expression Control Slider instead of a slider?
One standard way of animating mouth shapes is to set keyframes for each Phoneme (there are just ten standard sounds for English), then set keyframes or time remap a 10-frame timeline (one frame for each sound), and then use a menu. The menu is easy to animate because it displays the Phoneme. That makes much more sense than trying to move nulls or keyframe a slider.
I looked at your comp, and it doesn't make much sense to me. You have eight nulls tied to 8 points on the lips shape layer. If you want a smooth transition between the various poses (Phonems), you could create the animations lasting a few frames, but they would all have to pass through a standard at-rest pose, which would make animating the audio track look weird unless you came up with a bunch of make sense transitions. You will need to develop transitions between sounds like A-B-O and A-D-O because The mouth moves differently for the first three sounds when you say something like "About Adobe."
If this is a team project, I would use a simple 10-frame timeline, time remapping, and the Effects Controls/Menu Control to select the sounds.
You should be able to find several fairly good and a bunch of poorly produced tutorials on animating Phonems using After Effects.
Copy link to clipboard
Copied
Thanks for your input.