Lip-Syncing in After Effects: Best Practices

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024
  • Watch my free After Effects course for beginners! - • After Effects Full Cou...
    This tutorial will give you a brief introduction into the core concepts for lip-syncing in After Effects. Follow along with the video and you'll be making your characters talk flawlessly in no time!
    Want more from Ross? Find more tutorials here: / ross
    layerNum = 1
    control = comp("compname").layer("layername").effect("Slider Control")("Slider");
    if(control == layerNum)
    {value = 100;}
    else
    {value = 0;}
    Follow Ross on Twitter - / rossplaskow
    :)

ความคิดเห็น • 64

  • @ross
    @ross  ปีที่แล้ว +14

    If you enjoyed this vid and want to learn more check out my free After Effects course for beginners! - th-cam.com/video/_zFCeXO6x2Y/w-d-xo.html

    • @mdomarfaruk7854
      @mdomarfaruk7854 ปีที่แล้ว

      This expression is not working. Kindly check.

  • @foxigami
    @foxigami 8 วันที่ผ่านมา

    As a programmer who does art and animation as a hobby, this tutorial made me so happy. Combining my work and my hobby together is awesome! Makes me want to see what else I can tweak with scripts :D

  • @hudgerrific
    @hudgerrific ปีที่แล้ว +27

    If you use this as the first line of the expression, you don't have to manually change the layer number each time:

    layerNum = index - parent.index;


    You just have to make sure the controller stays directly above the mouth layers.

    • @ross
      @ross  ปีที่แล้ว +4

      oh wow! i never knew!! thank you so much x

    • @rushoddtv
      @rushoddtv ปีที่แล้ว +4

      @@ross Awesome method! Simple and easy to use, especially with the index-based numbering.
      Also, if you bind "Copy Expression Only" to Ctrl+Tab, you can quickly copy and paste the expression without opening the expression box.

  • @hellosabrinachaney
    @hellosabrinachaney ปีที่แล้ว +4

    I don't do a lot of character animation these days, but I love this tip so much I'm inclined to dive back in and try it!

  • @ZorrotorFPV
    @ZorrotorFPV ปีที่แล้ว +5

    Hola, si a éste tutorial llegó un hispanohablante y le marca error en la expresión, es porque tienes el After en español. Así las cosas, el código quedaría
    layerNum = 1
    control = comp("nombre de la composición").layer("lnombre de la capa").effect("Control del deslizador")("Deslizador");
    if(control == layerNum)
    {value = 100;}
    else
    {value = 0;}
    Thank you very much Ross Plasskow.

    • @Alma-ms9bg
      @Alma-ms9bg 2 หลายเดือนก่อน +1

      Muchas gracias,justo tenia ese error,te lo agradezco :)

  • @seanzoz
    @seanzoz 22 วันที่ผ่านมา

    Nice one 🤙now just pick_whip the slider value to a rotation value of the same or different null and use the rotation value to input your lip keyframes (also make them hold keyframes). This way you can keyframe like the wind using + and - hotkeys for rotation value (which now controls lips) and pg. up / pg. down keys to advance frames and "0" hotkey to ram render preview your work area as you go.

  • @socola5424
    @socola5424 4 หลายเดือนก่อน

    TY FOR THE TUTORIAL!! this is like, one of the very few times I've been practicing with after effects and this was super easy to follow!!

  • @leomass
    @leomass ปีที่แล้ว +1

    Nice, professional, plugin free, and easy way to make lip sync in AE! 👏👏

  • @Jeroen_Ech
    @Jeroen_Ech ปีที่แล้ว +1

    I bumped into this exact problem when animating my thesis film, and came up with a simular fix. Good you made a tutorial for futur animators!

  • @motiondarwin4049
    @motiondarwin4049 ปีที่แล้ว

    Wow Ross is back! I started in Ae world because I saw your tutorial of character animation 6 years ago. Thanks for all Ross!

  • @klbv2d
    @klbv2d ปีที่แล้ว +2

    And you can also add this lines of code to be able to use slider control
    else if(control >= layerNum && control < layerNum + 1)
    {value = 100;}
    So the final rusult is:
    layerNum = 1
    control = comp("compname").layer("layername").effect("Slider Control")("Slider");
    if(control == layerNum)
    {value = 100;}
    else if(control >= layerNum && control < layerNum + 1)
    {value = 100;}
    else
    {value = 0;}

  • @MKD-Edukacija
    @MKD-Edukacija 4 หลายเดือนก่อน

    help : when I move the head with puppet tools, than the mouth characters don't follow the head movements. (Mouth is parenting with the Head). How to solve that?

  • @mikeodeo
    @mikeodeo 3 หลายเดือนก่อน

    This is *so much better*, thank you!

  • @flyingfishdesign62
    @flyingfishdesign62 6 หลายเดือนก่อน

    Elegant and simple, nice! Thanks!

  • @animatabledotco
    @animatabledotco ปีที่แล้ว +1

    Nice. And if you need one shape to be on two layers you can just assign the same layernum to them both.

  • @EyuCoder
    @EyuCoder ปีที่แล้ว

    dude i used to love your short story videos. i hope you make some

  • @researchpurposes
    @researchpurposes ปีที่แล้ว +4

    YEAAAH ROSS IS BACK

  • @frederikeksteen2587
    @frederikeksteen2587 ปีที่แล้ว

    Great video as always! Thanks Ross.

  • @EventHoriXZ0n
    @EventHoriXZ0n ปีที่แล้ว +1

    I'm doing the walk of shame back to this video because I figured time remapping wouldn't give me any glitches for my project. Now it did and I'm going what I should have done in the first place

    • @chickenshoot5328
      @chickenshoot5328 ปีที่แล้ว

      Click the * option (next to the Shy icon) on the layer with time-remapping, and your glitches will go away. That option is actually called "collapse transformations," which I didn't understand or need until AFTER I did tons of lipsync with time-remapping. It has saved the day on a new project with time-remapping.

  • @benhnamte
    @benhnamte ปีที่แล้ว

    Missing this guy ❤

  • @Lucy-zc4tr
    @Lucy-zc4tr 10 หลายเดือนก่อน

    Perfect! Thank you so much.

  • @ArtnMotions
    @ArtnMotions 3 หลายเดือนก่อน

    Its great!

  • @nara-qu7uv
    @nara-qu7uv ปีที่แล้ว

    perfect tutorial👏👏

  • @michaelfung4285
    @michaelfung4285 หลายเดือนก่อน

    When I tried this the mouth kept disappearing because if the keyframes aren't right next to each other the slider value becomes a decimal and all mouths have 0% opacity. How do I stop the slider from using decimals between keyframes? As a hotfix I'm using Math.floor() but that feels a little bit jank and I'd love to know what I'm missing here.

  • @alternatefuture_design
    @alternatefuture_design 8 หลายเดือนก่อน

    WOOOOOWWWWW THAAANK YOUUUUUUU I LOVE YOUUUUU

  • @ThatMelaninLife
    @ThatMelaninLife ปีที่แล้ว

    Thank you!

  • @fausild
    @fausild ปีที่แล้ว

    So nice! Thank you very much ^-^

  • @nearsh0t_vids747
    @nearsh0t_vids747 ปีที่แล้ว

    I feel reborn. Thank you 🙏🏾

  • @iCookMe
    @iCookMe ปีที่แล้ว

    A Gem!

  • @maxmagnus777
    @maxmagnus777 11 หลายเดือนก่อน

    hi, what glitches are you getting ?
    Also I have 50 mouth shape layers so this method may be a bit tedious. Automating layer index may solve this. Perhaps copy paste would work here for all the layers?

  • @Redballoon99
    @Redballoon99 ปีที่แล้ว

    This is way more effort than time remapping? Especially if I have 20 MOUTHS
    THE ANIMATION aspect is relatively the same - but the set up of urs is way more tedious ?

  • @bilberryfashion
    @bilberryfashion ปีที่แล้ว

    I did all the steps but couldn't link audio to the null object someone tell me now please 🙏🏻 😂

  • @WilliamLittlejohn-np2ht
    @WilliamLittlejohn-np2ht ปีที่แล้ว

    Nice

  • @ampersandelmagonivel9947
    @ampersandelmagonivel9947 ปีที่แล้ว

    Gracias :B

  • @gerulfdosinger9869
    @gerulfdosinger9869 ปีที่แล้ว +1

    That's all great but what does it have to do with dinosaurs in space?

  • @789asd2hihi
    @789asd2hihi ปีที่แล้ว

    좋아요~

  • @CrazyEyezdotpng
    @CrazyEyezdotpng 11 หลายเดือนก่อน +2

    Why do all of you youtubers never show how to create layers...

  • @01234fida
    @01234fida ปีที่แล้ว

    My man was gatekeeping stuff from us for 9 years....

  • @MMAKOTV
    @MMAKOTV ปีที่แล้ว

    “Copy and paste this script”
    Shows completely unreadable script. Use letter bordering or drop shadow or put the words over a solid color. Make it easier for the viewer. Good video though

    • @ross
      @ross  ปีที่แล้ว +2

      its in the video details

  • @slynnm
    @slynnm ปีที่แล้ว

    thanks, you are genius!

  • @benyo5720
    @benyo5720 17 วันที่ผ่านมา

    dude....if u have all phases as paths....just please...why u just dont use keyframes on paths on the ONE shape layer....geeez.....no scripts, no problems...

  • @YoIomaster
    @YoIomaster ปีที่แล้ว +3

    i have a problem, the slider hav decimals and i cannot hit perfect 2 or 3 or whatever since its something like 1,9842 or 2,4535. how do i prevent this from happening because this way i cannot control anyhting if i dont hit exactly 1,2,3 or 4

    • @stunella
      @stunella ปีที่แล้ว +3

      Yeah I just realised I have this same problem where it spams all the layers to get to the next slider key frame. The only solution I have so far is having two set key frames for one mouth movement and keeping them one frame of the previous and next changing mouth movement. That way it can't transition through all the slider numberss. Hope this helps

    • @YoIomaster
      @YoIomaster ปีที่แล้ว

      @@stunella I actually created a text field, loaded the content of the slider and rounded it, and refered to the text field with the mouths instead of directly to the slider. the text field as a middle man solved several issues with multiple work flows in the past and it keeps me going haha

    • @inimations909
      @inimations909 หลายเดือนก่อน +1

      here's an experssion to solve that problem: layerNum = 1;
      control = Math.floor(comp("Comp 1").layer("mouth ctl").effect("Slider Control")("Slider"));
      if(control == layerNum)
      {value = 100;}
      else
      {value = 0;}

  • @BitmapImpact
    @BitmapImpact ปีที่แล้ว

    Thank You!

  • @WilliamLittlejohn-np2ht
    @WilliamLittlejohn-np2ht ปีที่แล้ว

    Nice

  • @ethanhaveron5617
    @ethanhaveron5617 ปีที่แล้ว

    We better see you sooner than another few years. Just watched meat mysteries and realised you posted new vids!!

  • @elibabaa
    @elibabaa ปีที่แล้ว

    Works great if you have a single character to lip sync with, what if you have multiple characters using the same lip composition? would you have to change the composition name for each character? It seems more stressful tho, except i don't totally understand. I'll be glad if you can throw more light. @Ross

  • @gaston.
    @gaston. ปีที่แล้ว

    Thanks Ross... This is good to know. Almost the same as cutting with Time Remapping but this gives one the option of fine tuning by animating the mouths.

  • @chickenshoot5328
    @chickenshoot5328 ปีที่แล้ว

    Or... If you aren't advanced or patient enough for all this coding, use Time-remapping (or even make a slider, or use awesome plug-in SF Caddy) and then (most importantly) select the comp with your mouths in it, press the STAR option (next to the "Shy" button in your column, it's actually called "collapse transformations"), and then all of the lip-sync won't be glitchy. I say this after animating 15 episodes of a show with glitchy lipsync and finally stumbling on this solution. Collapse transformations makes top priority of rendering the movement from one key to another, getting rid of dropped frames or sticking frames. Seriously. [No disrespect to this super informative video, I just want to put this really necessary step out there for lipsync no matter which option you choose]

    • @ComboGaminFan
      @ComboGaminFan ปีที่แล้ว

      Do u know how to switch mouth animations with null layer

    • @saibala9109
      @saibala9109 หลายเดือนก่อน

      Thank you so much brother _/|_ you made my day simple :)

  • @hvaranhvaran
    @hvaranhvaran ปีที่แล้ว

    Try using Adobe Character Animator for this. It will save you LOADs of time

    • @balls6906
      @balls6906 ปีที่แล้ว

      Character Animator is terrible and the automated lip sync feature has bad results, so you may as well do it manually, and if you're doing it manually then use a better programme. Saying that, Adobe Animate has good lip syncing, but a completely different way of working