CAMPION J. KIRKHAM | CAMPION.KIRKHAM@GMAIL.COM
  • Home
  • Animation & Editing
  • Tech Art
  • Portfolio
  • About & Resume

Tools & Scripting

Python

After learning about and becoming enamored with the OEIS, I decided to make a tool that would plot out a curve like the one Edmund Harriss made for Recamán's sequence, with any integer sequence (Since recording this footage I have polished up the UI to set the sliders to the current keyed value of their attributes, and the key buttons only turn red when there is a keyframe on that frame!). The biggest challenges in this script were:

Setting up the mesh to be able to animate the end of the extrusion along the curve:
  • The solution to this ended up being to switch the type of object being extruded. I was able to set up a polygon mesh to extrude along the curve, and by applying a Curve Offset animate the "Front" of the extrusion by animating the maxValue of the resulting subCurve node, but the "Back" did not animate well. The minValue of the subCurve could be animated, but because the extrusion did not affect the original ring of polygons, they could always stay at the world origin and stretch across to the current "Back" of the extrusion. This ended up being fixable by extruding a NURBS circle along the curve (And extruding directly to a polygon object.) Because there is no original surface, the "Back" of the extrusion was no longer being stretched in space to meet up with the original surface.
Figuring out how to stop the normals from flipping:
  • This was a result of having a curve that made a full 360 degree rotation. Every time the extruded mesh made that full rotation, it would flip the normals as it tried to match itself up to the orientation of the original NURBS circle. My solution to this was to animate the NURBS circle along a motion path using the curve as the path, then removing the connection to the transforms. The result was that the circle would sit at the origin, and spin in place. I then remapped the uValue of the motion path to be the same 0-1 range that the extrusion's subCurve was in, and hooked it up in the UI to the same slider as the subCurve's minValue. This meant that wherever the "Back" of the extrusion currently was along the curve, the NURBS circle at the origin would be rotated to match the angle of the curve, which stopped the normals from flipping at every full rotation.
​
The things still on my wishlist for this tool:
Set up a rig for animation:
  • Having animated with it a few times now I think I'd prefer to keyframe a slider in the world, rather than the sliders on the UI, this would be a simple solution to allow for more complex animations.
​This has been added 9/18! There is now an option to create a rig to animate the curve with, any animations that were done within the UI prior to creating the rig, get copied over to the rig, so animation can be continued rather than reset.

Allow for a more portable rig:
  • Because the NURBS circle remains linked to the extruded mesh, it cannot currently be moved without interfering with the extrusion.
​This has been added 9/12! The curve, nurbsCircle, and mesh are now placed into a group that can be moved, rotated, and scaled. The solution was to stop the nurbsCircle and mesh from inheriting transformations.
​

Allow for the editing of more than one curve in a scene:
  • The UI currently only supports the editing of the last curve created, but it would be nice to be able to select any of the curves in the scene and edit their properties.
​This has been improved upon 9/18! Now that there is an option to create a rig, multiple rigs can be created and animated in the same scene.
​Allow for the expansion along all 3 axes:
  • The curves are currently being created along the X and Y axes, but I'm curious what it would look like if they expanded out in the Z axis. Wouldn't it be cool if the curve could be one sequence looking down the Z axis, but a different sequence looking down the X axis?
MEL Script
Working at Exato Games these are some tools I created to speed up animation and rigging processes. These tools were created using MEL script and functioned within both Maya and Maya LT:
​
Retargeting from mocap skeleton:
  • Prior to our adopting the HIK editor into our pipeline, we were using stock motion capture clips that needed to be retargeted to our rigs. This tool allowed for the retargeting of limbs separately, as well as moving body animations from one rig to another, and moving facial animation from one rig to another.
Define custom rigs in HIK editor:
  • Once we began using the HIK editor, we needed a way to characterize the custom rigs and skeletons we already had.
Temporary import:
  • Because the studio was using Maya LT at the time, there was no way to reference in rigs or models. This tool would import files under a temporary namespace, then allow the user to delete them when finished, removing all references to the imported file.

C#

Picture
Picture
Here are two of the game projects I've made while learning C# as it relates to Unity, a breakout game and a bullet hell space shooter (Footage of a tower defense game coming soon!)
Campion J. Kirkham | Technical Artist & Animator | campion.kirkham@gmail.com
Picture