2D Cartoony Visemes (viseme parameters for VRCHAT)

Поділитися
Вставка
  • Опубліковано 28 гру 2024

КОМЕНТАРІ •

  • @kiwiplaysvr6798
    @kiwiplaysvr6798 9 місяців тому +4

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

  • @nullvalue003
    @nullvalue003 7 місяців тому +4

    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.

  • @slushyfax631
    @slushyfax631 2 роки тому +7

    this is indeed a vdeo, thank you milk

  • @hiBest_Blackline
    @hiBest_Blackline 5 місяців тому +2

    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

  • @thegooberator
    @thegooberator 8 місяців тому +5

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

    • @_colorbars_
      @_colorbars_  8 місяців тому +3

      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 8 місяців тому +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

    • @Tailslol
      @Tailslol 2 місяці тому

      Any way to add mmd compatibility?

  • @Cielle_Slime
    @Cielle_Slime Рік тому +6

    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.

  • @-ShroomiDude-
    @-ShroomiDude- 8 днів тому

    This will be awesome sauce for making my low-poly models. Thank you so much!!

    • @-ShroomiDude-
      @-ShroomiDude- 8 днів тому

      I actually have a question, though. Can you make your silent position a drawing as well?

  • @axneon
    @axneon 2 роки тому +22

    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_  2 роки тому +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!

  • @BossKnight
    @BossKnight 10 місяців тому

    absolute life saver, only tutorial for this i could find

  • @KaomojiFN
    @KaomojiFN Рік тому +3

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

  • @inverted---Invertedproductions
    @inverted---Invertedproductions 9 місяців тому +3

    bro deserves more subscribers,

  • @D3SKT0PBUDDYY
    @D3SKT0PBUDDYY 3 місяці тому

    this was SOOO helpful, thank you so much!

  • @ratlzzz
    @ratlzzz Рік тому +1

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

  • @GALM1Cipher
    @GALM1Cipher Рік тому +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

  • @issacvoregames
    @issacvoregames 6 місяців тому +1

    cool avatar bro and good vid

    • @_colorbars_
      @_colorbars_  6 місяців тому

      thank you issacvoregames

  • @SuperWiiBros08
    @SuperWiiBros08 5 місяців тому

    Thank you!

    • @CherryGoth_
      @CherryGoth_ 5 місяців тому

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

  • @nexosun4842
    @nexosun4842 Рік тому

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

  • @mrhax4741
    @mrhax4741 19 днів тому

    the standart material has an uv offset field which im p sure can be animated 🤔

  • @xinus2286
    @xinus2286 Рік тому

    thank you now i can animate my little skrunklies

  • @espitz930
    @espitz930 Рік тому +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_  Рік тому

      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.

  • @crayondoodles
    @crayondoodles Рік тому +2

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

    • @_colorbars_
      @_colorbars_  Рік тому +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 Рік тому

      thank you so much!!!

  • @Dieselfang
    @Dieselfang Рік тому +3

    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_  Рік тому

      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.

  • @Megagates_gg
    @Megagates_gg 2 роки тому +1

    This really helped me out - thank you!

  • @GeekyGooForYou
    @GeekyGooForYou 2 роки тому +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_  2 роки тому

      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.

  • @JosephAnim12
    @JosephAnim12 Рік тому +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_  Рік тому

      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

  • @ArmourOfDeath
    @ArmourOfDeath 6 місяців тому

    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_  6 місяців тому +1

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

  • @alwaysyouramanda
    @alwaysyouramanda Рік тому

    They’re AWESOME

  • @mrhenry404
    @mrhenry404 10 місяців тому

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

  • @maplesyrupvvvv
    @maplesyrupvvvv 2 місяці тому +2

    What do i do if i only use two mouths like closed and open?

    • @_colorbars_
      @_colorbars_  2 місяці тому +1

      then use the mouth open for every viseme and the closed for the silent one. i think it should work!

  • @spartan.X
    @spartan.X 5 місяців тому

    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_  5 місяців тому

      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 4 місяці тому

      @@_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 4 місяці тому

      @@_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_  4 місяці тому

      @@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!

  • @TailsEmo
    @TailsEmo Рік тому

    saved my life

  • @Tailslol
    @Tailslol 2 місяці тому

    Any way to add mmd compatibility?

  • @1abber
    @1abber 4 місяці тому

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

  • @theexaltedlt8222
    @theexaltedlt8222 2 роки тому +1

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

  • @treewizard4508
    @treewizard4508 8 місяців тому

    Big help! Thx

  • @wizardothefool
    @wizardothefool Місяць тому

    do you have a UV offset version of this? I'm trying to make my model oculus compatible for my friend

    • @_colorbars_
      @_colorbars_  Місяць тому

      You'd need to make a sprite sheet and animate offsets for each viseme. I can't really supply a how-to video at the moment, but its not too difficult- there are videos showing how to animate offsets in unity.

  • @WeeperSir
    @WeeperSir Рік тому

    INSTANT SUB!!!!

  • @alwaysyouramanda
    @alwaysyouramanda Рік тому

    I made it so hard for myself lol animating material changes

  • @lightterrors
    @lightterrors 10 місяців тому

    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_  5 місяців тому

      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.

  • @NykoStudio
    @NykoStudio 11 місяців тому

    Thank you a lot ^^

  • @Iwidelyoutliveeverything
    @Iwidelyoutliveeverything 7 місяців тому +1

    Sometimes the visemes get stuck

    • @_colorbars_
      @_colorbars_  6 місяців тому +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 Рік тому

    Thankuuuuuuu

  • @10flashbow37
    @10flashbow37 Рік тому

    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_  Рік тому

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

    • @10flashbow37
      @10flashbow37 Рік тому

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

  • @FunfettyYT
    @FunfettyYT 5 місяців тому

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

    • @_colorbars_
      @_colorbars_  5 місяців тому

      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 5 місяців тому

      @@_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

  • @gradmongur
    @gradmongur 4 місяці тому

    what is sil?

    • @_colorbars_
      @_colorbars_  4 місяці тому

      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 4 місяці тому

      @@_colorbars_ ohh thank you

  • @Optimusprime-ve7xi
    @Optimusprime-ve7xi Рік тому

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

    • @_colorbars_
      @_colorbars_  Рік тому

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

    • @Optimusprime-ve7xi
      @Optimusprime-ve7xi Рік тому

      @@_colorbars_ not for 2d visemes

    • @_colorbars_
      @_colorbars_  Рік тому +1

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

  • @aliakdogan9426
    @aliakdogan9426 5 місяців тому

    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_  5 місяців тому +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 5 місяців тому

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