It’s Almost Over!

2014 is almost over. What a crazy year, and TBH i’m stoked to see it go. It has been a roller coaster of a year and I’m hoping 2015 will be more like bumper cars. Anyway I’ve been working on a bunch of stuff. That monkey organ grinder game I made with Camden won first place and I got a sweet plaque. I helped make a super weird game for the Philly Game Jam where you have to play Rock Band drums to destroy Philadelphia. If you have usb rock band drums you can try to play it here.

I’m really excited about the stuff I’m working on for next year. I’m going to be organizing a video game First Friday event in Olde City Philly hopefully by February and will continue to try and push my Made In Philly logo onto everyone. Support the scene yo!madeInPhilly_01 copy But I also don’t want to jinx it or spoil too much. I will say that I’m working on a small-ish Kinect game that could get not so small. I’m also starting a procedural stealth game with Camden, but that’s super early days. There maybe some really cool pro wrestling motion capture work coming soon. And of course 2015 will be a big push for #BeatBoxing the world’s number one low poly rhythm based fighting game! Here’s some more characters as seen on Twitter dot com!


Summer Update

Oops haven’t updated this blog in a hot minute. Summer has been pretty busy. Graduated in June, spent a month freaking out about work and now I’m knee deep in projects.

First off is my personal project, a rhythm based fighting game working with Greg of Dumb and Fat and Dain Saint of Cipher Prime. Greg is programming gameplay, Dain is composing the music and I’m providing character art and animation. Greg and I team up on design and extraneous art. We all have other work so this is slow going but I’m really hype about it. Its gonna be big.

Next is my real paid grown up video game job. Sorta. I’m working as a dev at Philadelphia Game Lab. I primarily work with the Kinect V2 for Windows, making little games and demos for potential clients. Artists and theater folk wanna use this cool tech but don’t know what it can do and the lab has been doing a bad job getting through the tech jargon to explain it. So games speak louder than words! I made a quick demo in which two players with xbox controllers are trapped in a wheel that the kinect player can turn like a pirate ship steering wheel. The kinect player tries to spin it and get a ball in a hoop and the players inside try to play goalie while getting flung around. Its pretty quick and dirty but I am moving onto something cool and bigger. And with SPACE PIRATES! Shout out to Space for Unity asset guys!

spaceScreenfinally I’m getting back into my true love Mocap! I’ll be teaching two sections of the motion capture class at Drexel University in the fall! WOW SIX HOURS OF TEACHING WHAT AM I DOING EVEN. Sike it’ll be great. Its really great being on the ground floor of training this army of mocap animators and techs. Gives me hope for the future of building some big studio in Philly! I got my syllabus approved and start teaching in September. On top of that I’ll be leading a small team on an experimental mocap art project with dancers and crazy projections and 3D printing (???). So that’ll be fun. All this and I’ve still been hitting the gym 4 or 5 days a week and making it to Philly Dev Night every week and Creative Mornings every month, come say hi!. If you don’t hit your pillow at the end of the day completely exhausted then you didn’t have a good day!


New Game Coming Eventually!

Started work on a new project with my roommate/Philly Geek of the Year award winner. You can check him out at After working together on some games in our experimental games class we decided to resurrect an old project. I won’t go into a lot of details until we have more to show but if you happen to be a fan of both Parappa the Rapper and Punch Out you’ll really dig this. Anyway here is the first version of our protagonist, who remains nameless for now…


Christmas Cards

I made some Christmas cards in maya this year. I’m trying out a style I’ve seen in a few places, namely Turnislefthome and the David O’Reilly episode of Adventure Time. Basically its just using a ramp shader, making a good color scheme, and applying that to a mesh with the edges hardened. Hard edges are zero degree normals I believe. The ramp shader is also set to Facing Ratio so that the color is pulled based on the ratio of the camera angle and the normal angle. Then I drop a mental ray ambient occlusion on them to give it a little nicer shading. The mesh’s surface is edited with the Transform Component tool to add some variation. It is kind of like noise, but I may write my own vertex noise tool since Transform Component isn’t the greatest tool to use. It took a while to mess with the lighting. All in all it was a fun break from animation and everyone seemed to like them.

candle xmasRender_02 yulelog

finger improvements

a while back i posted some python auto finger rig thing. turns out that was garbage! the good news is this one isn’t as much garbage! select the top most knuckle joint of a simple 3 joint finger (not including end joint) run this in your script editor and boom! auto curl, spread, and individual knuckle bends. works on mirrored joints too. i think. let me know if it doesn’t

import maya.cmds as cmds
hiSel =
selection = = True)
cmds.setAttr(selection[0]+'.jointOrientX', 0)
cmds.setAttr(selection[0]+'.jointOrientY', 0)
cmds.setAttr(selection[0]+'.jointOrientZ', 0)
topJointWS = cmds.xform(selection[0], q = True, ws = True, rp =True)
midJointWS = cmds.xform(selection[1], q = True, ws = True, rp =True)
btmJointWS = cmds.xform(selection[2], q = True, ws = True, rp =True)
topNull =[0], n = 'topNull')
midNull =[1], n = 'midNull')
btmNull =[2], n = 'btmNull')
cmds.move(topJointWS[0],topJointWS[1],topJointWS[2], topNull+'.rotatePivot', topNull+'.scalePivot')
cmds.move(midJointWS[0],midJointWS[1],midJointWS[2], midNull+'.rotatePivot', midNull+'.scalePivot')
cmds.move(btmJointWS[0],btmJointWS[1],btmJointWS[2], btmNull+'.rotatePivot', btmNull+'.scalePivot')
#add controller to top and give it bend attrs
myCtrlName = selection[0]+'_curl'
fingerCtrl = cmds.curve(d=1, p=[(0,0,0),(0,1.5,0),(0,2,-0.5),(0,2.5,0),(0,2,0.5),(0,1.5,0)], k=[1,2,3,4,5,6], n = myCtrlName)
cmds.parent(fingerCtrl, selection[0], relative = True)
cmds.parent(fingerCtrl, w = True)
#lock and hide attrs
cmds.setAttr(fingerCtrl+'.translate', lock=True, k = False, cb= False)
cmds.setAttr(fingerCtrl+'.scale', lock=True, k = False, cb= False)
cmds.addAttr(fingerCtrl, at='float', ln='topBend', k = True)
cmds.addAttr(fingerCtrl, at='float', ln='midBend', k = True)
cmds.addAttr(fingerCtrl, at='float', ln='bottomBend', k = True)

#connect bend attrs to the joints
cmds.connectAttr(fingerCtrl+’.topBend’, selection[0]+’.rz’)
cmds.connectAttr(fingerCtrl+’.midBend’, selection[1]+’.rz’)
cmds.connectAttr(fingerCtrl+’.bottomBend’, selection[2]+’.rz’)
cmds.connectAttr(fingerCtrl+’.ry’, selection[0]+’.ry’)
#make SDKs on the nulls for the curl

Python rigging tools

Hey yall, I’ve been working on a couple quick little python scripts to speed up some basic maya rigging steps. I wrote them in python instead of mel, but now wish i had written them in pymel instead. what a crazy world this whole maya scripting thing is. anyway i’m gonna start posting some, feel free to take them, would you kindly  just leave my name on them 😀

duplicate and rename a hierarchy. useful for quickly creating multiple skeletons for IK/FK switches. the raw data popup is asking for a suffix to append to the name of the objects

#==Script by Steve Pettit==#
import maya.cmds as cmds
suffix = raw_input("Enter a suffix: ")
selection = = True)
cmds.duplicate(selection[0], n = selection[0] + suffix)[0] + suffix, hi=1)
dupSelection = = True)
relSel = cmds.listRelatives(dupSelection, children = True)
curParent = selection[0] + suffix
for i in relSel:
curSel = relSel[relSel.index(i)]
cmds.rename(curParent + '|' + curSel, curSel+ suffix)
curParent = curParent + '|' + curSel + suffix + '|'

these ones will create controls for fingers that make them curl when rotated down the finger chain

#==Script by Steve Pettit==#
hiSelection = = 1)
selection = = True)
fingerCtrl = cmds.curve(d=1, p=[(0,0,0),(0,3,0),(0,4,-1),(0,5,0),(0,4,1),(0,3,0)], k=[1,2,3,4,5,6])
cmds.pointConstraint(fingerCtrl, selection[0])
mult = cmds.createNode('multiplyDivide', n='myNode')
cmds.setAttr('myNode.input2X', -1)
cmds.connectAttr('myNode.outputX', selection[0]+'.rz')
cmds.connectAttr('myNode.outputX', selection[1]+'.rz')
cmds.connectAttr('myNode.outputX', selection[2]+'.rz')
hiSelection = = 1)
selection = = True)
fingerCtrl = cmds.curve(d=1, p=[(0,0,0),(0,3,0),(0,4,-1),(0,5,0),(0,4,1),(0,3,0)], k=[1,2,3,4,5,6])
cmds.pointConstraint(fingerCtrl, selection[0])
cmds.connectAttr(fingerCtrl+'.rz', selection[0]+'.rz')
cmds.connectAttr(fingerCtrl+'.rz', selection[1]+'.rz')
cmds.connectAttr(fingerCtrl+'.rz', selection[2]+'.rz')

that’s all for now friends. more later

facial animation progress

Been working on my character animation 2 face. This is the rough cut i suppose. I started by blocking in the head motion, adding eye movement and blinking to get some of the rhythm down. then I blocked in the opening and closing of the mouth, then wide and tight. started adding some expression and visemes to round it out. then got the eyebrows in a little. a lot more to do to make sure the timing and speed is deliberate. and i think i need to tweak things and add a lot of subtle things but i think this is all the big movements i want. audio is also pretty quiet so i’ll have to fix that somehow.

Character Animation 2 rough draft from Steve Pettit on Vimeo.