For over thirty five years, SideFX has been providing artists with procedural 3D animation and visual effects tools designed to create the highest-quality cinematic results. We are passionate about what our customers do because our roots are in production, both as artists and as pioneering technical innovators.
Hello, Thank you for yours tutorials ! They are really clear and helpful. But i have some problems with the expressions and one script you use, can you help me ?
My expression for the foot roll didn't work, and for the Master display for the CTRLS didn't work too with the ikblends display expressions. And finaly, your script to copy the parameters of the left arm to the right arm isn't work for me. i copy exactly your script but it's still not working. I'm on Houdini 17.5.173.
I hope to see more about the rigging, like muscles and physics / dynamics rigs.
Great series. I have only one question. Where could I find the matchIK/FK script for download? I have some problems with the script and would like to compare it with the original. I noticed that there are a few lines of code before the matchIK portion of the script.
Thanks for the tutorials. It's been fun transitioning away from Maya and bringing one of my characters to life in Houdini. I was just wondering about 2 of your scripts. You used one to mirror the template parms group and another to fix all the broken expressions left behind after running the mirror tool for the bones and controls in the viewport. I downloaded your provided scripts and those 2 weren't in there? I attempted to write the template parms group script, but couldn't seem to get it to work without errors. Will you be providing those scripts in the future? For now I just did everything by hand and that worked fine, but I do like to optimize my workflows wherever possible.
For the people like me who couldn't fine the injectproxy.shelf script. Ik retyped it (from the video) and here it is:
################################################### # Save display SOP geo # as file in hda # replace with File SOP # if display SOP is locked # delete it ################################################### ctrlclick = kwargs["ctrlclick"] shiftclick = kwargs["shiftclick"]
# get the objects objlist = hou.selectedNodes()
# get current hda hda_definition = objlist[0].parent().type().definition()
# get the display SOP for node in objlist: # inject geo nodename = node.name() section_name = node.name()+".bgeo" dsop = node.displayNode() section = dsop.geometry().data() # compression_type=hou.compressionType.Blosc hda_definition.addSection(section_name, section) # remove locked SOP if dsop.isHardLocked(): dsop.destroy() # add file SOP with opdef patch file = node.createNode("file", nodename+"_file") file.parm("file").set("opdef:../..?"+section_name)
if ctrlclick: # make pose_scope SOP pose = node.createNode("posescope", "posescope") pose.setDisplayFlag(True) pose.setRenderFlag(True) else: file.setDisplayFlag(True) file.setRenderFlag(True)
Many thanks for this extremely useful tutorial, I learned so much while following along. Any news on the launch of a follow-up tutorial on capturing and weighting and stuff? We really would need a similar high-quality video series on that from SideFX.
Amazing tutorial, thank you very much, I read that many people have a problem with scripts. Works on H18, scripts don`t work properly on H18. Can someone write me where I can download Twist Expr, Mirror HDA parameters. Mirror HDA parameters I rewrote from the tutorial, but it doesn't work, it shows syntax error, I checked 100 times if I rewrote it correctly. ## Mirror HDA Parameters # Select HDA # Click Shelf Tool ############################## # get the HDA hdanode = hou.selectedNodes() hdanode_type = hdanode[0].type() definition = hdanode_type.definition()
# make copy of parmTemplateGroup ptg = definition.parmTemplateGroup()
# get Folder folder = () folder = hou.ui.readInput( message="Folder To Mirror:", initial_contents = "L Arm") folder = folder[1]
# get the old and new Prefix prefix = () prefix = hou.ui.readInput( message="Original Prefix:", initial_contents = "L") prefix = prefix[1]
# Find the Folder containing the parameters new_folder = ptg.findFolder(folder) def renameTemplates(folder, prefix, new_prefix): temp = folder.parmTemplates() for t in temp: if type(t) == hou.FolderParmTemplate: renameTemplates(t, prefix, new_prefix) else: # setName and setLabel name = t.name() name = name.replace(prefix + '_', new_prefix + '_') t.setName(name)
# Find the Folder containing the parameters new_folder = ptg.findFolder(folder) def renameTemplates(folder, prefix, new_prefix): temp = folder.parmTemplates() for t in temp: if type(t) == hou.FolderParmTemplate: renameTemplates(t, prefix, new_prefix) else: # setName and setLabel name = t.name() name = name.replace(prefix + '_', new_prefix + '_') t.setName(name)
I'm wrapping up with the set to default and set key buttons.
The script works it's way up to the containing folder and captures everything within to set a key. I have a problem in that the jaw is inside the head folder in parameters so it appears in the same tab.
Setting up the button to key head will also key the jaw, naturally as it is inside folder. How did you prevent anything inside main folder from not being keyed?
It happens to the feet which are inside leg folders, etc. Where as I want to isolate them to separate foot and leg buttons while being in the same tab. Many, many thanks! :)
I've copied every function and triple checked the spelling, but every one of them gives me always the same error I've spent many hours getting to this point and now I'm suck
this is way is always good to share the file. I'm not a rigger and it's really frustrating spending all these hours in something that doesn't work
コメント
anokhin 5 年, 6 ヶ月 前 |
Could you please tell is there a hope to see continue of this collection?
Celths 5 年, 5 ヶ月 前 |
Hello,
Thank you for yours tutorials ! They are really clear and helpful.
But i have some problems with the expressions and one script you use, can you help me ?
My expression for the foot roll didn't work, and for the Master display for the CTRLS didn't work too with the ikblends display expressions.
And finaly, your script to copy the parameters of the left arm to the right arm isn't work for me. i copy exactly your script but it's still not working.
I'm on Houdini 17.5.173.
I hope to see more about the rigging, like muscles and physics / dynamics rigs.
HugoMfx 5 年, 4 ヶ月 前 |
great rigging tutorial tnx
SlowSolutions 5 年, 4 ヶ月 前 |
Hi,
Great series. I have only one question.
Where could I find the matchIK/FK script for download?
I have some problems with the script and would like to compare it with the original. I noticed that there are a few lines of code before the matchIK portion of the script.
Thank you in advance.
Eroc999 5 年, 3 ヶ月 前 |
Thanks for the tutorials. It's been fun transitioning away from Maya and bringing one of my characters to life in Houdini. I was just wondering about 2 of your scripts. You used one to mirror the template parms group and another to fix all the broken expressions left behind after running the mirror tool for the bones and controls in the viewport. I downloaded your provided scripts and those 2 weren't in there? I attempted to write the template parms group script, but couldn't seem to get it to work without errors. Will you be providing those scripts in the future? For now I just did everything by hand and that worked fine, but I do like to optimize my workflows wherever possible.
Cheers
karelkiers 5 年, 3 ヶ月 前 |
For the people like me who couldn't fine the injectproxy.shelf script. Ik retyped it (from the video) and here it is:
###################################################
# Save display SOP geo
# as file in hda
# replace with File SOP
# if display SOP is locked
# delete it
###################################################
ctrlclick = kwargs["ctrlclick"]
shiftclick = kwargs["shiftclick"]
# get the objects
objlist = hou.selectedNodes()
# get current hda
hda_definition = objlist[0].parent().type().definition()
# get the display SOP
for node in objlist:
# inject geo
nodename = node.name()
section_name = node.name()+".bgeo"
dsop = node.displayNode()
section = dsop.geometry().data()
# compression_type=hou.compressionType.Blosc
hda_definition.addSection(section_name, section)
# remove locked SOP
if dsop.isHardLocked():
dsop.destroy()
# add file SOP with opdef patch
file = node.createNode("file", nodename+"_file")
file.parm("file").set("opdef:../..?"+section_name)
if ctrlclick:
# make pose_scope SOP
pose = node.createNode("posescope", "posescope")
pose.setDisplayFlag(True)
pose.setRenderFlag(True)
else:
file.setDisplayFlag(True)
file.setRenderFlag(True)
karelkiers 5 年, 3 ヶ月 前 |
It doesn't connect the "posescope" to the file node.. :S
caleb choune 5 年, 2 ヶ月 前 |
karelkiers : you just missed 1 line :
pose.setFirstInput(File)
caleb choune 5 年, 2 ヶ月 前 |
error: pose.setFirstInput(file)
Ferdinand13 4 年, 3 ヶ月 前 |
Yes, "file" needs to be with a lower case "f" as the variable has been set up as "file" in line 30: file = node.createNode("file", nodename+"_file")
Now it works :-)
pietnelis 5 年, 2 ヶ月 前 |
@Michael Goldfarb
Many thanks for this extremely useful tutorial, I learned so much while following along. Any news on the launch of a follow-up tutorial on capturing and weighting and stuff? We really would need a similar high-quality video series on that from SideFX.
4toonStudio 4 年, 10 ヶ月 前 |
Amazing tutorial, thank you very much, I read that many people have a problem with scripts. Works on H18, scripts don`t work properly on H18. Can someone write me where I can download Twist Expr, Mirror HDA parameters. Mirror HDA parameters I rewrote from the tutorial, but it doesn't work, it shows syntax error, I checked 100 times if I rewrote it correctly.
## Mirror HDA Parameters
# Select HDA
# Click Shelf Tool
##############################
# get the HDA
hdanode = hou.selectedNodes()
hdanode_type = hdanode[0].type()
definition = hdanode_type.definition()
# make copy of parmTemplateGroup
ptg = definition.parmTemplateGroup()
# get Folder
folder = ()
folder = hou.ui.readInput(
message="Folder To Mirror:",
initial_contents = "L Arm")
folder = folder[1]
# get the old and new Prefix
prefix = ()
prefix = hou.ui.readInput(
message="Original Prefix:",
initial_contents = "L")
prefix = prefix[1]
new_prefix = ()
new_prefix = hou.ui.readInput(
mesage="New Prefix:",
initial_contents = "R")
new_prefix = new_prefix[1]
# Find the Folder containing the parameters
new_folder = ptg.findFolder(folder)
def renameTemplates(folder, prefix, new_prefix):
temp = folder.parmTemplates()
for t in temp:
if type(t) == hou.FolderParmTemplate:
renameTemplates(t, prefix, new_prefix)
else:
# setName and setLabel
name = t.name()
name = name.replace(prefix + '_', new_prefix + '_')
t.setName(name)
label = t.label()
label = label.replace(prefix + ' ', new_prefix + ' ')
t.setLabel(label)
folder.setParmTemplates(temp)\n'))
# relable folder
label = folder.label()
label = label.replace(prefix + ' ', new_prefix + ' ')
folder.setLabel(label)
renameTemplates(new_folder, prefix, new_prefix)
ptg.insertAfter(new_folder.name(), new_folder)
definition.setParmTemplateGroup(ptg)
definition.save(definition.libraryFilePath())
I can't find these scripts anywhere, can somebody help me? Thanks again for the tutorial.
FranciscoBravo 4 年, 6 ヶ月 前 |
Hi currently I am working in H 18.0.348 this works fine (hope it helps)
# Mirror HDA Parameters
# Select HDA
# Click Shelf Tool
##################################
# get the HDA
hdanode = hou.selectedNodes()
hdanode_type = hdanode[0].type()
definition = hdanode_type.definition()
# make copy of parmTemplateGroup()
ptg = definition.parmTemplateGroup()
# get folder
folder = ()
folder = hou.ui.readInput(
message = "Folder to Mirror:",
initial_contents = "L Arm")
folder = folder[1]
# get the old and new Prefix
prefix = ()
prefix = hou.ui.readInput(
message = "Original Prefix:",
initial_contents = "L")
prefix = prefix[1]
new_prefix = ()
new_prefix = hou.ui.readInput(
message = "New Prefix:",
initial_contents = "R")
new_prefix = new_prefix[1]
# Find the Folder containing the parameters
new_folder = ptg.findFolder(folder)
def renameTemplates(folder, prefix, new_prefix):
temp = folder.parmTemplates()
for t in temp:
if type(t) == hou.FolderParmTemplate:
renameTemplates(t, prefix, new_prefix)
else:
# setName and setLabel
name = t.name()
name = name.replace(prefix + '_', new_prefix + '_')
t.setName(name)
label = t.label()
label = label.replace(prefix + ' ', new_prefix + ' ')
t.setLabel(label)
folder.setParmTemplates(temp)
# relable folder
label = folder.label()
label = label.replace(prefix + ' ', new_prefix + ' ')
folder.setLabel(label)
renameTemplates(new_folder, prefix, new_prefix)
ptg.insertAfter(new_folder.name(), new_folder)
definition.setParmTemplateGroup(ptg)
definition.save(definition.libraryFilePath())
4toonStudio 4 年, 10 ヶ月 前 |
ok, that's ok :) i got it !
dddmod___ 4 年, 6 ヶ月 前 |
Now there is no autoscope function in the parameters, only in type properties
DaFiNNiGaN 4 年, 5 ヶ月 前 |
Thanks for such a great series!
I'm wrapping up with the set to default and set key buttons.
The script works it's way up to the containing folder and captures everything within to set a key.
I have a problem in that the jaw is inside the head folder in parameters so it appears in the same tab.
Setting up the button to key head will also key the jaw, naturally as it is inside folder.
How did you prevent anything inside main folder from not being keyed?
It happens to the feet which are inside leg folders, etc. Where as I want to isolate them to separate foot and leg buttons while being in the same tab.
Many, many thanks!
:)
DaFiNNiGaN 4 年, 5 ヶ月 前 |
Actually, ignore that, I set up more folders to deal with it.
Is that the best way to do it?
So in my parameters Head/Neck tab I've set up 3 main container folders
Head
Jaw
Eyes
So the scripts to set key are self contained within these main folders
burakumincgi 4 年, 5 ヶ月 前 |
hda python module is not working in h18.0.460
Error running callback:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'setfoldertodefault'
burakumincgi 4 年, 5 ヶ月 前 |
I've copied every function and triple checked the spelling, but every one of them gives me always the same error
I've spent many hours getting to this point and now I'm suck
this is way is always good to share the file. I'm not a rigger and it's really frustrating spending all these hours in something that doesn't work
burakumincgi 4 年, 5 ヶ月 前 |
stuck*
burakumincgi 4 年, 5 ヶ月 前 |
Error running callback:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:/PROGRA~1/SIDEEF~1/HOUDIN~1.460/houdini/python2.7libs\hou.py", line 39203, in __getattr__
def __getattr__(*args): return _hou.HDAModule___getattr__(*args)
AttributeError: 'module' object has no attribute 'setkeyonfolder'
burakumincgi 4 年, 5 ヶ月 前 |
found the problem.
xan_d 4 年, 4 ヶ月 前 |
annd the problem was?
Siddhartha Nayanananda 4 年, 4 ヶ月 前 |
Hi burakumincgi! Did you fix this issue? I can't figure it out too. Could you please help? Thanks a lot.
burakumincgi 4 年, 5 ヶ月 前 |
btw, here is my progress so far
https://youtu.be/ui0raLw8xEA
Please log in to leave a comment.