WickedP text logo

ProxyMan!

History: view complete post history here.

So, where to begin here. I’ve always had an interest in character and live capture animation. Being able to work with motion capture is what I’ve always wanted to do. But, I learned animation in a software package that didn’t work well with motion capture data. Although I was familiar with other software that could (e.g. MotionBuilder), I wanted to work with my native animation package, Cinema4D. So, I made the decision to turn my mocap knowledge towards making my own ‘mocap studio’ inside of Cinema4D.

When I first started tinkering with this idea, I built myself a simple polygon character mesh and an Xpresso setup to drive it. After I had built the proxy character mesh to play with, I loosely coined the term ProxyMan, and thus ProxyMan he became.

But, I soon found the Xpresso rig not enough to work with. I needed more editing control. So I learned to build simple plugins in C++ using the Cinema4D SDK. I began by playing around with the demo plugins that came with the software, by just changing a few attributes and seeing what it did. I then moved onto interface elements like dialogs, and at this point I thought I’d try to move the process of adding the Xpresso rig into an automated one, by adding some simple commands into a dialog interface.

Unfortunately, I don’t have any historic data for the Xpresso rig anymore, but the image below is the first version of ProxyMan with a C++ interface. After setting your attributes, it would add the Xpresso rig into the scene for you.

The original ProxyMan Dialog v1.0

From memory, you could add a nurbs object, weight tags, morph tags and even the early versions of Cinema4D’s Xref object. I don’t recall what the “Produce single object” option did, it may have crushed the nurbs to a plain polygon object for higher resolution mesh control, but I don’t remember now.

Since the first dialog, I then started exploring ways to make my own custom scene objects. I remember a forum member by the name of Cactus Dan (CD) who built his own character animation plugins (which he sold at the time). I thought it would be neat to try build my own for mocap character animation. CD’s plugins were much more than what I was trying to make, but it was a useful learning curve to have someone like him provide some help along the way. I was hoping to one day integrate my mocap plugin with his character tools, but Dan died before I was able to approach him with what I had.

From here on, I was largely on my own (with the plugin forum not too far away if I needed some help). Once I could see how things worked in code, I started to move the dialog commands into a scene object plugin, which is where ProxyMan now sits today. It’s been a great introductory journey and transition to programming, albeit with a steep learning curve, which has been frustrating at times, but also rewarding.

ProxyMan is probably the first proper C++ plugin I ever wrote.

While I was moving ProxyMan into programming land, I also updated his mesh. You can see in the original dialog image above that he was a pretty bare bones character. Nothing has really changed, he just now looks a bit more…. ProxyManish? In any case, he now looks like this:

ProxyMan! Well, this is actually DemoMan, he’s the in-built test character for the ProxyMan plugin

The ProxyMan character you see above is actually DemoMan. He’s the demo mesh I built into the plugin, to use as a test-bed character when I needed to dp quick previews of mocap data.

So, how does he work? Well, I needed some sort of way to import and interface with the motion capture data. I played around with a few ways of doing this, but the only way forward was to really build my own motion editing dialog. This meant I had to program my own interface down to the pixel level in some places (I kid you not).

The motion editor dialog is pretty simple – it’s just like a video editing timeline interface. Start by adding some timeline layers. Then, load any mocap animation as clips, drag and drop them onto your motion layers, edit them with some simple commands and hey presto – you have a motion capture animated character!

ProxyMan Motion Editor dialog, with layers and basic clip handling commands

The motion editor interface is a plugin of it’s own, so it can be docked inside your Cinema4D layout. Control over which character to edit is easily switched. You can even save the dialog into one of your layouts, that is, you could create your own Cinema4D layout with the dialog already embedded in the interface.

I should add here as well, that you can animate any character with this plugin. The DemoMan character is just a character mesh I built into the plugin to test with. And yes, there is a crowd simulation plugin in the works too.

While MotionBuilder is the cream of the crop for working with this kind of data, my ProxyMan plugin is turning out to be a pretty useful piece of software, not to mention fun to play with. The setup is intuitive and easy to use, so much so that I can get the DemoMan character into a new scene and animating in well under a minute from scratch.

I’m hoping to have more examples of ProxyMan in action sometime in the near future.