Create Agent from built in mocap rig - Simple
This will take a test mocap rig 3 built in to houdini, create an agent, add agent clips from the built in library (must be in your scene already), and lay everything out.
import hou
obj = hou.node("/obj")
agentname = hou.ui.readInput("Agent Name", title="Name")
agentname = agentname[1]
agentpNode = obj.createNode("geo")
agentNode = agentpNode.createNode("agent")
agentpNode.setName(agentname)
agentNode.setName(agentname)
agentnet = agentpNode
inputMoc = hou.ui.selectNode(title="Select Character Rig to base agent on", multiple_select=False, node_type_filter=hou.nodeTypeFilter.ObjSubnet)
agentNode.parm("agentname").set(agentname)
agentNode.parm("objsubnet").set(inputMoc)
#clips = hou.ui.selectNode(multiple_select=True, node_type_filter=hou.nodeTypeFilter.Obj)
clips = hou.ui.selectNode(title="Select all clips - mocap biped 3 rigs", multiple_select=True, node_type_filter=hou.nodeTypeFilter.ObjSubnet)
agentclip = agentnet.createNode("agentclip")
clipprops = agentnet.createNode("agentclipproperties")
clipnum = len(clips)
clipcount = 1
agentclip.parm("locomotionnode").set("Hips")
#print(clipnum)
for x in clips:
node = hou.node(x)
name = node.name()
path = str(x)
nframes = node.parm("nFrames")
fs =hou.playbar.timelineRange()[0]
fe = int(fs) + int(nframes.eval())
agentclip.parm("framerange" + str(clipcount) +"_1").deleteAllKeyframes()
agentclip.parm("framerange" + str(clipcount) +"_2").deleteAllKeyframes()
agentclip.parm("clips").set(clipnum)
agentclip.parm("name" + str(clipcount)).set(name)
agentclip.parm("objsubnet" + str(clipcount)).set(path)
agentclip.parm("framerange" + str(clipcount) +"_1").set(fs)
agentclip.parm("framerange" + str(clipcount) +"_2").set(fe)
agentclip.parm("converttoinplace" + str(clipcount)).set(True)
clipprops.parm("numclips").set(clipnum)
clipprops.parm("clipname_" + str(clipcount)).set(name)
clipprops.parm("enableblending_" + str(clipcount)).set(True)
clipprops.parm("framesbefore_" + str(clipcount)).set("5")
clipprops.parm("framesafter_" + str(clipcount)).set("5")
clipcount = clipcount+1
agentclip.setFirstInput(agentNode)
clipprops.setFirstInput(agentclip)
agentpNode.layoutChildren()
No Comments