Thursday, January 19, 2012

Character test

I've spent most of the past month working on the character animation system for the next game. There was a bunch of stuff I had to ramp up with the tools and some of the pipeline code, but after a good push I have been able to demonstrate proof of concept of most of the things I need to do with the production side of the character systems including motion capture (mocap), character rigging to use the mocap, and a workflow that should minimize any single points of failure in the assets from breaking everything. Moving away from large, monolithic Softimage scenes that contain lots of things to more manageable, smaller scenes that use referenced models is almost sure to save me time in the long run if history is anything to go by.

Recently, I converted what I call my "preview" realtime shaders that are used in Softimage's realtime display mode from HLSL to CGFX (they mimic what the runtime HLSL shaders do, and determine what data is exported). It took me a while to decide to CGFX, because I had hoped that Softimage would let me work with DX9's HLSL as well as it does CGFX, but the reality is that Softimage is much better behaved with CGFX than HLSL. It took half a day to convert the shaders, but now that they are done it's already clear how much better off I am with them. The main benefit is that with CGFX I can actually select and manipulate the geometry; with HLSL the Softimage UI becomes half broken in that it shows you the model (usually) but none of the interaction UI is visible.. despite it responding to input. This is of course difficult to use, and switching to CGFX so I can use the OpenGL display mode almost immediately improved my attitude about using realtime shaders in Softimage. It is mostly functional and I can get my work done.

Speaking of work, I've been on a shader and pipeline sprint lately to try to get the runtime to look as much like what I see when I texture models in 3DCoat. There were some pipeline changes required (as usual..) but at this point I think things are looking pretty good. While the model below is of dubious artistic quality, it does at least render pretty much how I modeled and textured it. It's a skinned mesh being rendered with a Light Pre-Pass (LPP) renderer whose main purpose is to give me something to test the entire content pipeline. The character pipeline is nearly done and I hope to finish up the last bits very soon and start working on runtime character animation and behavior systems. Once it's done, the engine should provide the features I need for creating and animating the characters and props within Squad Miner.

Another thing I did recently was some tests with cleaning up mocap data. The video below shows the result of some very noisy motion capture data that has been cleaned up a bit and made to loop. It's not perfect, not by a long shot, but it was my first time at it and it was some good practice.