This week I worked on finishing the rig, procedural layout in houdini, and pyro look development.
Rig
The rig has been tested and approved by our animator.
Rigging Scripts
I wrote some quick python scripts for maya to help me with this rig to automate and increase accuracy.
import maya.cmds as cmds
def joints2curve():
curve = cmds.ls(sl=1)[0]
curve_point_count = cmds.getAttr(curve + ".spans")+1
cmds.select(d=1)
prev_joint = ""
root_joint = ""
for i in range(0,curve_point_count):
joint_name = f"curve_JNT_0{i}"
joint_pos = cmds.getAttr(curve + f".ep[{i}]")[0]
joint = cmds.joint(n = joint_name, p=joint_pos)
print(joint_pos)
print(joint)
if i==0:
prev_joint = joint
root_joint = joint
continue
cmds.joint(joint, e=1, zso=1, oj = "xyz")
prev_joint = joint
cmds.joint(root_joint, e=1, oj = "xyz", secondaryAxisOrient = "xup",ch=1, zso=1)
joints2curve()
import maya.cmds as cmds
def pivot2joint():
# Select control and joint and run to snap control pivot to joint
selected = cmds.ls(sl=1)
ctrl = selected[0]
jnt = selected[1]
jnt_pos = cmds.joint(jnt, q=1, p=1)
cmds.move(jnt_pos[0],jnt_pos[1],jnt_pos[2], ctrl + ".scalePivot", ctrl + ".rotatePivot", absolute=1)
pivot2joint()
import maya.cmds as cmds
def joint2pivot():
selected = cmds.ls(sl=1)
obj = selected[0]
jnt = selected[1]
obj_rpivot = cmds.getAttr(obj + ".rotatePivot")[0]
cmds.move(obj_rpivot[0], obj_rpivot[1], obj_rpivot[2], jnt)
joint2pivot()