Here is the Python code used to create the setRange node setup for the stickyLips: lf_main_attr = "head_icon.Lf_Sticky_Lips" rt_main_attr = "head_icon.Rt_Sticky_Lips" lip_val_list = [34, 30] lip_name_list = ['upperLip', 'lowerLip'] name_counter = 0 for each in lip_val_list: half_val = (each / 2) + 1 total_val = each + 1 div_val = 10.0 / half_val counter = 0 while(counter
awesome script and thanks for sharing it...... i am facing a weird issue after using the script. The sticky shape is off-centered. both my curves have 21 cvs (upper lip) and 23 cvs (lower lip) so i have p ut that value in val_list. but the resultant shape isnt symmetrical. I also tried changing the number of cvs but the result is still the same.
# Error: RuntimeError: file C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\internal\pmcmds.py line 217: The destination attribute 'UpprLip_Wire_Bshape.inputTarget[0].inputTargetGroup[0].targetWeights[17.0]' cannot be found.
RepublicanMug thanks man! I honestly don’t know or even doubt that it’s used in pipelines. For most studios, I’m sure they have something even better than this, and I’ve been pretty happy with these results. Problem is, most studios keep their methods to themselves, so there’s no way of knowing what they use.
it's amazing!!!Thank you so much for sharing this course!But i have a question that if i want lips stick from right to left ,or left to right.How do i make it happen?
Thanks for the comment! If you want to switch so it moves from left to right or vice versa, you would need to adjust the python script. Instead of setting up the script so that it flips the values on the right side to mirror the left side, you would set up the right side as a continuation of the left side. It will take you a bit of manipulating the code I provided, but if you understand python code, it is definitely doable.
I have an erro on line 13: lip_sr = pm.shadingNode( 'setRange', asUtility=True, n='lf_' + lip_name_list[name_counter] + str(counter+1) + '_setRange') # Error: NameError: file line 13: name 'pm' is not defined # do you know what a can do?
Hello man! I found this tutorial now after years, but still it looks good! Running the code I had this error: # Error: RuntimeError: file C:\Program Files\Autodesk\Maya2019\Python\lib\site-packages\pymel\core\general.py line 222: The destination attribute 'upperLip_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[0]' cannot be found. # The line 222 of C:\Program Files\Autodesk\Maya2019\Python\lib\site-packages\pymel\core\general.py is the following: 210 def connectAttr( source, destination, **kwargs ): 211 """ 212 Maya Bug Fix: 213 - even with the 'force' flag enabled, the command would raise an error if the connection already existed. 214 215 """ 216 if kwargs.get('force', False) or kwargs.get('f', False): 217 try: 218 cmds.connectAttr( source, destination, **kwargs ) 219 except RuntimeError, e: 220 if str(e) != 'Maya command error': 221 # we only want to pass on a certain connection error. all others we re-raise 222 raise e 223 else: 224 cmds.connectAttr( source, destination, **kwargs ) Please help me if you can! :(((
@@doctorsteen I was having the same issue, it's going to sound stupid, the solution is: type down the exact same line manually for all 8 times it appears ('_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' ). that's what I just did and it worked. some copy/paste corruption on the characters there idk.
Thanks for the comment! As long as both the geometry and the curves are bound to the rig, the copy skin weights should work. If it doesn’t work, then maybe something isn’t bound to the rig yet.
thanks for replay every think some your video but for copy doing weight don't work curve don't much a geometry 1 clothes joint 2 one to one I don't know why don't work 😐
I've taken all the steps. select line in geometry convert to linear curve for upper and lower lip after reverse and clear history both them and skin with head join and tip jaw joint after go to center but I have problem with copy skiing weigh the lines don't attach to the geometry I don't know why pleas help me hhhh sorry for my English so bad
hary jack thanks for the comment. The important thing to check when copying skin weights is to make sure both the head geo and the curve you just made are both bound to the rig. In the beginning of the video, I showed you that the head geo was bound to the rig already with jaw weights painted. The reason copy skin weights doesn’t work if one of the objects you’re copying isn’t bound to the rig.
hary jack good question. Since the main setup is being done on a separate blendshape model, it won’t be affected by the scale. If you intend to do this on the main model and not a blendshape, then that is a different story.
i used the python, am getting error in 8th line. am not good in python..so not able to get the point.. # Error: line 1: unexpected indent # File "", line 8 # for each in lip_val_list # ^ # IndentationError: unexpected indent # can you help to sort it out.. orelse please provide a tutorial to link the setarrange node and blendshape in manual without script.
Christy Sonia that error typically means there’s an issue with indentation. It sounds like that line is indented out when it shouldn’t be. Indent it back using shift and tab buttons. If you’re getting into this level of rigging, I strongly suggest learning python coding. It’s basically required for any sort of rigging job these days.
Hey! I'm having an issue with the setRange node creation script. I'm sure it's obvious but I'm getting an error on the last line: // Error: invalid syntax # File "", line 81 # name_counter = name_counter + 1 # ^ # SyntaxError: invalid syntax // It looks like the indentation is correct, and the error is aligned to right after the "1", what is wrong here? Thanks!
Austin Broder hmmmmm the syntax all seems correct there. Is there anything after the + 1 or on the line after it. That’s the only thing I could think as being wrong.
I'm a bit late to the party here, but when I run the provided python (I changed the names of lr_main_attr and rt_main_attr to match my attribute paths, as well as changed the lip_val_list numbers to match my CV counts), all I get is "invalid syntax". Any ideas as to what's going on?
Jordan Tetzlaff does it give you a specific line number for the error or what line of code the error is on. In the script editor, turn on “show stack trace” and that should at least make the error more specific.
Hello, don't know why exactly but it's the very last "1", not reconized in maya, you need to delete this and type "1" again, will be reconize and you will run the script.
Anindita Ray yes I am using scripting but only because it would take a lot longer to do without. Everything I’m doing with the scripting can be done manually, it’ll just take you a lot longer. I would strongly suggest learning some Python scripting, especially if you’re working in rigging
thank you so much for your reply yes i will learn but can you make a video manually just a little bit of the script part so that i can understand how to do rest
Hey man, awesome setup! I'd really like to implement this on my own but the script is giving me error at line 69. I also tried with your own naming convention but same thing. I quadra-checked it from the video. Code with fixed identation is down below(copy/paste code from youtube comment is not ideal i guess) . Can you check on what's going on or put the code to pastebin so i can try that again? I put the error to the bottom. I tried to re-define it, left is working but right isn't. pastebin.com/N2wMUZU2
Beyazpiyon it looks like it might be an issue with the counter. The error shouldn’t be happening, since the mid_pma variable is referenced before that line. It could be an issue where the counter is right before it creates the mid_pma, but it counts up later. Make sure the counter = counter + 1 lines are indented correctly. I’m away from my computer, but I will try to check it later.
Yes man, you were right. It's fixed now. I can't tell how many times i tried to figure this setup out. Fantastic, thank you very much. Looking forward to your other videos!
Here is the Python code used to create the setRange node setup for the stickyLips:
lf_main_attr = "head_icon.Lf_Sticky_Lips"
rt_main_attr = "head_icon.Rt_Sticky_Lips"
lip_val_list = [34, 30]
lip_name_list = ['upperLip', 'lowerLip']
name_counter = 0
for each in lip_val_list:
half_val = (each / 2) + 1
total_val = each + 1
div_val = 10.0 / half_val
counter = 0
while(counter
awesome script and thanks for sharing it...... i am facing a weird issue after using the script. The sticky shape is off-centered. both my curves have 21 cvs (upper lip) and 23 cvs (lower lip) so i have p ut that value in val_list. but the resultant shape isnt symmetrical. I also tried changing the number of cvs but the result is still the same.
ok, so i increased the cv's by 1 number in both upper and lower lip and now its working in a symmetrical way... :)
Thank you. ❤️
Sir, these videos are amazing! Thank you for sharing with us!
# Error: RuntimeError: file C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\internal\pmcmds.py line 217: The destination attribute 'UpprLip_Wire_Bshape.inputTarget[0].inputTargetGroup[0].targetWeights[17.0]' cannot be found.
That's pretty sick. Get decent lips deformation in under a minute. I imagine it's used widely in pipelines?
RepublicanMug thanks man! I honestly don’t know or even doubt that it’s used in pipelines. For most studios, I’m sure they have something even better than this, and I’ve been pretty happy with these results. Problem is, most studios keep their methods to themselves, so there’s no way of knowing what they use.
it's amazing!!!Thank you so much for sharing this course!But i have a question that if i want lips stick from right to left ,or left to right.How do i make it happen?
Thanks for the comment! If you want to switch so it moves from left to right or vice versa, you would need to adjust the python script. Instead of setting up the script so that it flips the values on the right side to mirror the left side, you would set up the right side as a continuation of the left side. It will take you a bit of manipulating the code I provided, but if you understand python code, it is definitely doable.
I have an erro on line 13:
lip_sr = pm.shadingNode( 'setRange', asUtility=True, n='lf_' + lip_name_list[name_counter] + str(counter+1) + '_setRange')
# Error: NameError: file line 13: name 'pm' is not defined #
do you know what a can do?
In the first line of code you need to import the pymel code. The first line should have: import pymel.core as pm and it will run
Hello man! I found this tutorial now after years, but still it looks good! Running the code I had this error:
# Error: RuntimeError: file C:\Program Files\Autodesk\Maya2019\Python\lib\site-packages\pymel\core\general.py line 222: The destination attribute 'upperLip_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[0]' cannot be found. #
The line 222 of C:\Program Files\Autodesk\Maya2019\Python\lib\site-packages\pymel\core\general.py is the following:
210 def connectAttr( source, destination, **kwargs ):
211 """
212 Maya Bug Fix:
213 - even with the 'force' flag enabled, the command would raise an error if the connection already existed.
214
215 """
216 if kwargs.get('force', False) or kwargs.get('f', False):
217 try:
218 cmds.connectAttr( source, destination, **kwargs )
219 except RuntimeError, e:
220 if str(e) != 'Maya command error':
221 # we only want to pass on a certain connection error. all others we re-raise
222 raise e
223 else:
224 cmds.connectAttr( source, destination, **kwargs )
Please help me if you can! :(((
Hi! I have been having the same issue and I was just wondering if you managed to fix it? And if so how?
Same problem, any luck?
@@doctorsteen I was having the same issue, it's going to sound stupid, the solution is: type down the exact same line manually for all 8 times it appears ('_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' ). that's what I just did and it worked. some copy/paste corruption on the characters there idk.
thanks for sharing. helps a lot
thanks for information , but why copy skin weight don't work with curve and geometry pleas replay
Thanks for the comment! As long as both the geometry and the curves are bound to the rig, the copy skin weights should work. If it doesn’t work, then maybe something isn’t bound to the rig yet.
thanks for replay every think some your video but for copy doing weight don't work curve don't much a geometry
1 clothes joint
2 one to one
I don't know why don't work 😐
I've taken all the steps. select line in geometry convert to linear curve for upper and lower lip after reverse and clear history both them and skin with head join and tip jaw joint after go to center but I have problem with copy skiing weigh the lines don't attach to the geometry I don't know why pleas help me hhhh sorry for my English so bad
hary jack thanks for the comment. The important thing to check when copying skin weights is to make sure both the head geo and the curve you just made are both bound to the rig. In the beginning of the video, I showed you that the head geo was bound to the rig already with jaw weights painted. The reason copy skin weights doesn’t work if one of the objects you’re copying isn’t bound to the rig.
thanks a lot , for replay , what about scale all character or head don't scale with head destroy mouth or lip hhhh I have a lot of problem
hary jack good question. Since the main setup is being done on a separate blendshape model, it won’t be affected by the scale. If you intend to do this on the main model and not a blendshape, then that is a different story.
woooooooooooooooow Thank you!
i used the python, am getting error in 8th line. am not good in python..so not able to get the point..
# Error: line 1: unexpected indent
# File "", line 8
# for each in lip_val_list
# ^
# IndentationError: unexpected indent #
can you help to sort it out.. orelse please provide a tutorial to link the setarrange node and blendshape in manual without script.
Christy Sonia that error typically means there’s an issue with indentation. It sounds like that line is indented out when it shouldn’t be. Indent it back using shift and tab buttons.
If you’re getting into this level of rigging, I strongly suggest learning python coding. It’s basically required for any sort of rigging job these days.
Hey! I'm having an issue with the setRange node creation script. I'm sure it's obvious but I'm getting an error on the last line:
// Error: invalid syntax
# File "", line 81
# name_counter = name_counter + 1
# ^
# SyntaxError: invalid syntax //
It looks like the indentation is correct, and the error is aligned to right after the "1", what is wrong here?
Thanks!
Austin Broder hmmmmm the syntax all seems correct there. Is there anything after the + 1 or on the line after it. That’s the only thing I could think as being wrong.
@@dcpalley23 Weird...I tried on my other computer and it worked fine. Thanks anywho!
I'm a bit late to the party here, but when I run the provided python (I changed the names of lr_main_attr and rt_main_attr to match my attribute paths, as well as changed the lip_val_list numbers to match my CV counts), all I get is "invalid syntax". Any ideas as to what's going on?
Jordan Tetzlaff does it give you a specific line number for the error or what line of code the error is on. In the script editor, turn on “show stack trace” and that should at least make the error more specific.
Hello, don't know why exactly but it's the very last "1", not reconized in maya, you need to delete this and type "1" again, will be reconize and you will run the script.
perfect! That worked! Thank you so much!
It probably was due to posting the script in a comment here. Text editors don't like importing code from different programs.
# Error: NameError: file line 13: name 'pm' is not defined
I'm fix
lip_val_list = [22, 50]
help me!
The first line in your script needs to be:
import pymel.core as pm
Without that line at the beginning of your script, Maya won't recognize 'pm'
making zipper lips is not possible to make manually
i dont know scripting thought to make it manually :(
Anindita Ray yes I am using scripting but only because it would take a lot longer to do without. Everything I’m doing with the scripting can be done manually, it’ll just take you a lot longer. I would strongly suggest learning some Python scripting, especially if you’re working in rigging
thank you so much for your reply
yes i will learn but can you make a video manually just a little bit of the script part so that i can understand how to do rest
Hey man, awesome setup! I'd really like to implement this on my own but the script is giving me error at line 69. I also tried with your own naming convention but same thing. I quadra-checked it from the video. Code with fixed identation is down below(copy/paste code from youtube comment is not ideal i guess) . Can you check on what's going on or put the code to pastebin so i can try that again? I put the error to the bottom. I tried to re-define it, left is working but right isn't.
pastebin.com/N2wMUZU2
Beyazpiyon it looks like it might be an issue with the counter. The error shouldn’t be happening, since the mid_pma variable is referenced before that line. It could be an issue where the counter is right before it creates the mid_pma, but it counts up later. Make sure the counter = counter + 1 lines are indented correctly. I’m away from my computer, but I will try to check it later.
Yes man, you were right. It's fixed now. I can't tell how many times i tried to figure this setup out. Fantastic, thank you very much. Looking forward to your other videos!