2D Cartoony Visemes (viseme parameters for VRCHAT)

Sdílet
Vložit
  • čas přidán 29. 08. 2024
  • the tutorial i wish i had... here you go. feel free to watch at like 1.5 speed because i am sick and im not the best at makin these kinds of videos
    / _colorbars_
    #vrchat

Komentáře • 72

  • @kiwiplaysvr6798
    @kiwiplaysvr6798 Před 5 měsíci +4

    Very informative, been making avatars, for years and didn't know how 2d visemes worked I'll be sharing this around

  • @nullvalue003
    @nullvalue003 Před 3 měsíci +3

    I also had to go down this rabbit hole ot figure this out a few years ago. I'm happy you've created an easy-to-follow tutorial here. I hope to see more cartoony characters in the future with this.

  • @hiBest_Blackline
    @hiBest_Blackline Před měsícem +1

    i was making a mask for my avatar and couldnt figure out how to make both meshes move together without combining them in blender. this video helped a lot , very informative and easy to understand. Thank you :3

  • @Cielle_Slime
    @Cielle_Slime Před rokem +5

    I love the hard sketch mouth. I'd be interested to see how you plan to improve it but I think the style looks great! Ty for the tutorial I've been trying to figure this out for a while.

  • @slushyfax631
    @slushyfax631 Před rokem +7

    this is indeed a vdeo, thank you milk

  • @thegooberator
    @thegooberator Před 4 měsíci +3

    For the newest version I had to put the animator controller under FX in the playable Layers tab. Hope that helps someone.

    • @_colorbars_
      @_colorbars_  Před 4 měsíci +2

      the visemes control is on the fx animator, where you would put toggles and stuff-- unless vrchat updated it and screwed everything over again. but i dont think i specified that in this video. thank you!

    • @thegooberator
      @thegooberator Před 4 měsíci +1

      @@_colorbars_ I used the same-ish method as you did at first, by my toon shader was causing some weird shading on the mouth, so as a programmer and a game developer that uses unity almost daily, I knew there was a better way to do 2D face cards using scrolling UVs. The method I found was to to put all of the mouths on the same texture as the base texture and that meant I also needed to move the UV cords for the rest down and slightly shrunk. Then in a shader I would have a "VisemeIndex" int that was controlled by the animations. The shader would then move the UV cords for the mouth to the correct mouth. But this way, there's no floating mouth in front, its one material, skinned mesh renderer, one texture, will always work with ANY shader(you'd just need to add the logic), and best of all will work on the quest because there's no transparency. A link to my GitHub to see how it works if you are curious: github.com/TheRealCanad1an/Better2DMouths

  • @axneon
    @axneon Před rokem +20

    thank you so much for making this, I pretty much lost hope in finding any kind of documentation on 2d visemes before finding this, and i combed through almost every documentation and tutorial on the web on this
    its worth noting though as someone who had an identical method with the invisible plane: I strongly recommend keeping the mouth plane aligned with the face mesh as best as possible if you wanna also upload this to quest, because the quest version does not allow invisible textures. It really sucks having a cool mouth texture only for it to be a weird out of place square for half the userbase (assuming anyone else cares about their things being cross platform)
    one question though, say i wanted to have the mouth textures transparent on pc and the skin color on quest. would it be better to make an entirely new set of animations with the alt textures, or swap the textures within with the existing animations? or would this be possible at all with a single avatar?

    • @_colorbars_
      @_colorbars_  Před rokem +2

      You'd have to make new animations for the new quest materials unfortunately. Either that or replace the textures in the unity project for the transparent images with the skin color ones; It'll be easy if you name the skin color textures the same as the transparent ones, deleted the transparent ones from the project, and inserted the skin color ones. It replaces the texture in the material and you dont need to change the animations.
      Easy way to convert the materials to quest shader is by using VRCquesttools, though it'll only convert to toon lit. Fast n easy tho.
      Glad it helped!

  • @KaomojiFN
    @KaomojiFN Před rokem +3

    This was so helpful!!! Thank you I've been trying to find something like this since forever!

  • @invertedRR
    @invertedRR Před 5 měsíci +3

    bro deserves more subscribers,

  • @issacvoregames
    @issacvoregames Před 2 měsíci +1

    cool avatar bro and good vid

  • @SuperWiiBros08
    @SuperWiiBros08 Před měsícem

    Thank you!

    • @CherryGoth_
      @CherryGoth_ Před měsícem

      dude what the hell, you're the guy that did stuff for Joel lol. weird to see you here. much love

  • @BossKnight
    @BossKnight Před 6 měsíci

    absolute life saver, only tutorial for this i could find

  • @GALM1Cipher
    @GALM1Cipher Před rokem +2

    An integer is whole numbers as in 1 2 3 ect. a float is also numbers in between as in 1.02 5.66343 65465.234 ect

  • @ratlzzz
    @ratlzzz Před rokem +1

    this is awesome tysm, i've been scrounging around at 4 am looking for a solution like this

  • @espitz930
    @espitz930 Před rokem +2

    This is a great video and have watched many times. I'm still stuck on just one more part! I haven't been able to find much documentation on it but its just the whole process of importing images, turning an image into a separate material, linking them to their blendshape and all that. I have all the materials! Named blendshapes, textures, and a seperate plane, just lost on the what exactly to do with my pngs and making them into a material just for the plane.

    • @_colorbars_
      @_colorbars_  Před rokem

      hiya! im glad you like the video!
      There are two steps to doing this, 1. In blender the plane Must have its own texture aside from the rest of the model. I show you that here 8:30
      In unity, when you apply a texture to a model, it automatically creates a corresponding material. However, you can also right click and press Create > Material, in the "albedo" slot you can click and drag your png.
      Your material inspector will look a little different from mine since i had a specific shader, but standard allows for transparency. All you have to do is go to the top of the shader options and click the drop down for "rendering mode" and select Cutout.

  • @treewizard4508
    @treewizard4508 Před 4 měsíci

    Big help! Thx

  • @nexosun4842
    @nexosun4842 Před 11 měsíci

    Great tutorial! Worked pretty good for my avatar. :)

  • @alwaysyouramanda
    @alwaysyouramanda Před rokem

    They’re AWESOME

  • @GeekyGooForYou
    @GeekyGooForYou Před rokem +4

    This is a life saver!!! I tried making blend shapes with individual face plates for mine and they ended up clipping through the model. Do you think these visemes can be switched out for expressions?

    • @_colorbars_
      @_colorbars_  Před rokem

      do you mean using expressions instead of visemes or pausing visemes for expressions?
      for the first one, yes, for the second one, im not so sure how. I'm no programmer but I assume there's a way to stop the visemes while you have a gesture on. If you wanna take the lazy route, see if you can make a blendshape that hides the mouth and exchanges it for one with the expression.

  • @LolbitTheGoof
    @LolbitTheGoof Před 2 měsíci

    Hiya! Love the tutorial so far!! Huge help to me as im not to big of a fan of modelling 3d mouths with blendshapes, so this was a huge help to go for 2d mouths. Although i do have a problem i cant seem to fix yet, testing the visemes, the mouth does not return to the base viseme, it stays stuck to the last viseme played, has that happened with you, if so is there a fix?
    [Edited] OOP I got it to work!!

    • @_colorbars_
      @_colorbars_  Před 2 měsíci +1

      glad it works for you!!
      (sometimes saying the issue out loud helps you through it lol. Coding ducks and all)

  • @xinus2286
    @xinus2286 Před rokem

    thank you now i can animate my little skrunklies

  • @JosephAnimStudios
    @JosephAnimStudios Před 11 měsíci +1

    Thank you so much! I've been looking for a tutorial like this.
    One question, do you know how to make it random? like, if I wanted to change my eye image to blinking image randomly?

    • @_colorbars_
      @_colorbars_  Před 11 měsíci

      i've asked around and picking from a random set of materials isn't really a thing vrchat can do? I'd have to do more research. It's hard to get answers to those kinds of questions. I DO however have an avatar with a 2d blinking animation, and thats just a sprite sheet of different images of the eyes with uv offsets with a LONG looping animation (2 minutes) to give it the illusion that the character is looking around and blinking at random intervals. I'll try to get a video of that together; hard to sit down and focus long enough to record

  • @VitinhoGamer21
    @VitinhoGamer21 Před 9 měsíci

    saved my life

  • @mrhenry404
    @mrhenry404 Před 6 měsíci

    i hope both sides of ur pillow are comfortably cold, TYYY

  • @crayondoodles
    @crayondoodles Před rokem +1

    could you possibly make a tutorial video for blinking? and thank you so much for this tutorial !! :]

    • @_colorbars_
      @_colorbars_  Před rokem +1

      I have done blinking for a similar character. It's a bit more complicated and i by no means have perfected it, but i do have a method! i'll see if i can get time this year to make a video on it

    • @crayondoodles
      @crayondoodles Před rokem

      thank you so much!!!

  • @NykoStudio
    @NykoStudio Před 7 měsíci

    Thank you a lot ^^

  • @spartan.X
    @spartan.X Před 29 dny

    isn't it easier and optimized to create multiple planes with all your visemes textures on them and use classic blendshapes instead of all this, it's automatically recognise in unity if i remember right (and if it's named correctly bafore exporting) Because for quest users you won't be able to use as much materiels as you do here

    • @_colorbars_
      @_colorbars_  Před 29 dny

      not necessarily-
      you would still need to assign separate materials to all those planes, which in turn, isn't optimizing it any further than it already is. It's just adding more vertices.
      it'd be more optimized* if you used a single sprite sheet, made as many planes as you needed, and UV offset the texture on each plane in your animations so that they all have the visemes on the sprite sheet. You'd still need to use viseme parameters for this.
      *optimized here meaning uploadable for quest. the most optimized version of this method would be to use a single plane and a single sprite sheet, animating with uv offsets.

    • @spartan.X
      @spartan.X Před 28 dny

      @@_colorbars_ no need to use multiple materials, one with all the expressions (expression sheet texture) and juste uv on the 11 or 13 different visemes textures, a unique 1024 or 2048 png and so blendshape for all visemes with the corresponding planes going in and out of your model instantly, that was indeed what i meant

    • @bashartz
      @bashartz Před 8 dny

      @@_colorbars_ do you know how to do the same method with uv offsets in unity? it's what i'm currently trying to do! i also have another set of mouths specifically for happy expressions, but i feel like that would be more complicated and require actual coding lol

    • @_colorbars_
      @_colorbars_  Před 8 dny

      @@bashartz Yeah! just animate your offsets. If you press record and then change your offset in a shader, that should do the trick. Something like poyomi will require you to enable a part of your shader to be animated.
      (finding out how to tile a sheet would be the trickiest part in this, im still figuring that out.)
      For having another set of mouths, it's a little complicated to explain in text, but what you could do is have two different sheets- one for neutral, one for happy. Have two on different planes that you can switch out for that expression.
      I'd recommend toggles in your radial menu for this, but it'd be interesting to see how it could work with just the finger gestures I suppose!

  • @1abber
    @1abber Před 23 dny

    im struggling to get this to work, i followed this step by step, it works in unity, but not in vrchat?

  • @theexaltedlt8222
    @theexaltedlt8222 Před rokem +1

    good stuff. i tried doing this a couple months ago and it kind of sucked

  • @Megagates_gg
    @Megagates_gg Před rokem +1

    This really helped me out - thank you!

  • @Dieselfang
    @Dieselfang Před rokem +1

    So how would I make the lip sync appear on the avatar when I speak? I noticed that you have the lip sync set to "viseme blend shape" in your avatar descriptor, but when I do that none of the visemes appear in any of the options below it.

    • @_colorbars_
      @_colorbars_  Před rokem

      Set it to "viseme paramater". Sorry for the confusion and the delay in response!
      As long as you've set up the visemes in the avatar's fx layer like they are in the video, it should work.

  • @WeeperSir
    @WeeperSir Před 9 měsíci

    INSTANT SUB!!!!

  • @Iwidelyoutliveeverything
    @Iwidelyoutliveeverything Před 3 měsíci +1

    Sometimes the visemes get stuck

    • @_colorbars_
      @_colorbars_  Před 2 měsíci +1

      You'd have to share more details in order for me to help you out; I've never experienced this issue before. Check to see if your parameters match up with the way I've configured them

  • @mikeylarsen5627
    @mikeylarsen5627 Před rokem

    Thankuuuuuuu

  • @lightterrors
    @lightterrors Před 6 měsíci

    would it be possible to make a tutorial thats super beginner friendly? i made and rigged a model but i dont know how to use unity that well

    • @_colorbars_
      @_colorbars_  Před měsícem

      sorry for replying so late- there are plenty of tutorials on youtube that start from the very bottom! I don't have any to reccomend at the moment, as vrchat has changed quite a bit since I followed any, but sippbox does a good job.

  • @alwaysyouramanda
    @alwaysyouramanda Před rokem

    I made it so hard for myself lol animating material changes

  • @FunfettyYT
    @FunfettyYT Před měsícem

    does this work for a vrm file? and does it work in vseeface?

    • @_colorbars_
      @_colorbars_  Před měsícem

      if the set up is similar vrchat's sdk, then I don't see why not. I don't know anything about vseeface/vrm files- the whole reason this is possible is because vrchat has "Viseme parameters", which allow you to assign any animation to the lip sync.

    • @FunfettyYT
      @FunfettyYT Před měsícem

      @@_colorbars_ ah ok thank you I do not think it is possible
      I will stick to placing my emotions inside my characters head and then figuring out different things

  • @10flashbow37
    @10flashbow37 Před rokem

    im trying to upload but its saying the image is too big for the actions and moods you probably went over this in the video but there are no time stamps

    • @_colorbars_
      @_colorbars_  Před rokem

      i've never heard of this error, could you explain more?
      also I didn't go over expressions in this video

    • @10flashbow37
      @10flashbow37 Před rokem

      never mind it was with another issue fixed it and the lip syncing is working perfectly@@_colorbars_

  • @Optimusprime-ve7xi
    @Optimusprime-ve7xi Před rokem

    why cant you just show all the different mouths you did so we know which one is for every viseme?

    • @_colorbars_
      @_colorbars_  Před rokem

      there are a lot of helpful tutorials online about lip sync animations

    • @Optimusprime-ve7xi
      @Optimusprime-ve7xi Před rokem

      @@_colorbars_ not for 2d visemes

    • @_colorbars_
      @_colorbars_  Před rokem +1

      @@Optimusprime-ve7xi they work the same as keyframes for any 2d animation

  • @gradmongur
    @gradmongur Před 25 dny

    what is sil?

    • @_colorbars_
      @_colorbars_  Před 25 dny

      sil is Silence. As explained in the video, each viseme has a number assigned to it, Sil being 0. Since the set up for viseme parameters is a Int that returns to 0 when not detecting input (IE, you aren't talking or are muted), Sil is set at 0

    • @gradmongur
      @gradmongur Před 25 dny

      @@_colorbars_ ohh thank you

  • @aliakdogan9426
    @aliakdogan9426 Před měsícem

    what about if the mouth images were all in one texture map then you make multipleplanes on the face to assign each mouth image, then make shapekeys showing one at a time ...think that could work?
    the mouth animations look so alive and cool.

    • @_colorbars_
      @_colorbars_  Před měsícem +1

      yeah that could work! would add more polygons, but it wouldn't be that bad. You'd have to make the animation transition/exit times 0 though, so each plane shows up instantly.

    • @aliakdogan9426
      @aliakdogan9426 Před měsícem

      @@_colorbars_ yes it works , found a tutorial that did exactly that.
      thanks