Showing posts with label showreel. Show all posts
Showing posts with label showreel. Show all posts

Tuesday, July 28, 2015

Stretch Node

This afternoon I have been working on a MPxNode. As mentioned in previous posts, I am planning to learn the Maya API, and as a part of my studies I am going to build some tools that will make my rigging workflow more efficient. So I have started somewhere simple. We all build stretchy joints into our characters for one reason or another. The standard setup is as such: two input points have the world position connected into a distanceBetween node. The output of the distance between node is divided by the full length of the joint chain before it starts stretching. This is normally done in a multiplyDivide node. Now if you want to build global scalability into your rig, you need to divide the initial output from the distanceBetween node by a global scale parameter. This requires another multiplyDivide node.So here we have 5 nodes to calculate something very simple. What I decided to do was build a node that would require two input points only. Therefore the setup will use 3 nodes, 2 inputs and the custom node.

The node is really very easy to write, and the longest part of it is actually setting up the attributes on the node and how they affect each other. Once you have a template for a MPxNode you can just copy and paste it as a starting point. However it is always nice to write this out and make sure you understand it rather than just copying and pasting it.

So this stretch node has 3 inputs. the startPoint and endPoint, as well as a length attribute which the user sets to the length at which stretching will start. There are then two outputs. Distance, which just returns the distance between the two in points at any given time (useful for determining the point at which stretching will occur), and the main output which outputs the final stretch value which will generally get piped into the scaleX of the necessary joints.

What awesome things did I learn when writing this plugin. The attribute that enables MPoint to return the distance between two points.

posA = OpenMaya.MVector()
posB = OpenMaya.MVector()
p0 = OpenMaya.MPoint(posA)
p1 = OpenMaya.MPoint(posB)
distance = p0.distanceTo(p1)#returns double

Next awesome thing.In the initialize() function we call this:
plugin = OpenMayaMPx.MFnPlugin(obj,'Tim Forbes','0.0','Any')
We then register the plugin type. Now this is different depending on what plugin you are creating, and will require different input data. Somewhere to get caught out, especially if you copy your template from a OpenMayaMPx.MPxCommand type plugin...like I did :p
The differences here are below:
OpenMayaMPx.MPxCommand will be plugin.registerCommand('command name', creator)
The command only requires the command name and the creator function, however the node requires a few extra things as seen below.
OpenMayaMPx.MPxCommand will be plugin.registerNode('stretchNode', stretchNode.kPluginNodeId,creator,initialize)

Because we are creating a node that will be connected to the dependency graph we need a unique node ID, we need the node name, the creator function and also the initialize function. The initialize function is where all the node attributes are added. The creator function is where our pointer is created to access the plugin within maya.
The unique Node Id is created using the inbuilt maya function: kPluginNodeId = OpenMaya.MTypeId(0x00000882)
For home use I have generated an arbitrary ID, however in production you would want to make sure you used an ID that would not clash with in house node IDs.Currently I built the node to take on the translates of the two input points. This was for ease of building and proof of concept. My next version will take wither the world matrix or transforms, thus making the node more adaptable to different rigging scenarios. Anyway, I built this node into a rig and you can view it working below.

Stretch Node from Tim Forbes on Vimeo.

Maya Python API Stretch Node


Next Up. Add in matrix connections to the StretchNode. Following that I'm going to make a MPxCommand plugin that traverses the dependency graph to find connected skin clusters. This will be useful in a convoluted node graph if you need to manupulate the skin cluster in a specific way, or really any specific node I guess:-)

Wednesday, November 5, 2014

Chappie

I can finally share the first trailer of chappie. It was amazing working at Image Engine and producing the rNd and rigging for Chappie. I'm so stoked to have been involved in what looks like is going to turn out to be an amazing film. Image Engine is killing it again!

Wednesday, February 19, 2014

My Reel on It's Art Mag

I couldn't believe it when my reel started getting hundreds of hits on Vimeo. I was kinda suspicious as to why it was, then a buddy shot me a link that my reel had been added to It's Art Online Magazine. So Stoked.
Check it out here!

Friday, November 8, 2013

Updated Showreel

I have finally got some new footage to add to my showreel. In this latest update my work on RIPD has been added.

Rigging Reel 2013 from Tim Forbes on Vimeo.


For any more info shoot me an email at: timforbesdigital@gmail.com

Tuesday, October 29, 2013

Face Rigging part 1

As promised here is my first video showing the progress of my facial rigging project. Fully joint based facial rigging in Maya.

Joint Based Muscle Face Rig from Tim Forbes on Vimeo.

Monday, October 28, 2013

Face Rigging

So I have been working on setting up a joint based muscle face rig system. It is coming along nicely, and I showed it to a work mate yesterday and he was blown away and said I've gotta post the work. You can see a little bit of it in my reel here: Showreel, but I will record a detailed screen grab of the rig working and post it up to show off the deformation and skin sliding that I have set up. I have set up a very cool sticky lip system as well as some nice soft eyes and muscles that slide over the surface of the underlying skeleton to preserve volume and create some nice skin sliding effects.
Finally I am doing a dynamics pass to get some jiggle in the looser neck skin, and I think I will do a final hi-res render mesh that I may sculpt some wrinkles on to be driven by the muscles so I end up with a nice overall package. The final result will hopefully be a rendered greyscale pass with some nice lighting to show off the deformation.
I'm going to try for an initial post of the rig in progress in few days by the time I record and upload it.

Friday, August 23, 2013

Elysium On FXGuide

This is a cool little documentary on FxGuide about Image Engines role in Elysium. Definitely worth a watch and it shows some cool breakdowns on the shuttles and droids that I rigged. Enjoy :-)

Friday, June 7, 2013

RIPD

I can't believe that I haven't blogged these trailers yet. Working on Elysium and RIPD has taken up a good part of my life for the past few years. Anyways, here is the trailer from RIPD which has finally been released for me to show friends and family. Image Engine produced some amazing creature work for this show, and it was awesome to be a part of the project.

Elysium

Probably the biggest thing I have been involved in recently, other than getting married, is Elysium. The trailer is out so I am finally able to share it with my friends and family which is awesome. Image Engine has worked so hard to make this look amazing, and I am really proud to have been involved in such a cool project. I can not wait to see this on the big screen. Check it out.

Sunday, May 19, 2013

Swimming

So today I went for my first open water swim and tried out my new wetsuit. We hit Sasamat Lake and it was awesome. It was so nice swimming in the middle of this big fresh water lake surrounded by beautiful mountains and rainforest. My new 2XU wetsuit fit perfectly - pretty good for a suit bought online without trying it on :-/ - and it didn't restrict my swimming at all. At first I was a bit freaked by the depth of the lake and it took a while to settle into swimming in open water, but once I got into gear it was fine, and the extra buoyancy of the wetsuit made life pretty easy. I'm loving swimming at the moment with the Achilles injury as I am able to keep fit - however I really can't wait to get back to running and riding properly. New Wettie Finished! Me and Fred, middle of the lake.

Monday, November 12, 2012

Updated showreel

The same as the last one, just updated with my work from Battleship and The Thing.I also added a new personal piece in there, some facial rigging. Still a work in progress whenever I have a spare moment, but it has some cool joint based facial muscle deformation.

Rigging Reel End 2012 from Tim Forbes on Vimeo.