Work continues on my animation editor. I’m considering the skeleton editing component of it finished (barring bug fixes and usability tweaks based on extended usage) and I’ve moved on to the real meat of the program: the animation editing. I’ve got a pretty slick interface for managing the animations tied to the skeleton rigged up, and now the most difficult part is ahead of me: getting actual animations running.
In other news, I love dual monitors. Makes my life so much easier.
As usual, I’ve taken the necessary steps to keep my 5 second attention span on track—ooh, hey, that’s shiney—by giving myself a nice todo list with reasonably small tasks. It’s one of the few things that can keep me focused and productive for long periods of time. This list was aimed at getting animations going so that the animation editor actually lives up to it’s name:
Implement creation, selection, and deletion of individual animations on a skeletonImplement a single keyframe on each animation.- Sync the number of joints in the animation data with the number of joints in the skeleton data to allow for editing the skeletons after having created animations
- Allow a keyframe to pose a character… this includes the editing controls and the rendering.
- Build and evaluate constraints on the skeleton during the editing phase to ensure the skeleton doesn’t do things that the joint constraints don’t allow
- Give keyframe editing control to the user: create, select, move, duplicate and delete
- Allow animation keyframes to be played sequentially
- Implement interpolation between frames
- Additional features of animations like tying an event to a keyframe for the game to process (for things like sounds, particle effects, etc)
I’ve already made progress, as you can see. After all those points have been hit, the animation editor will have its primary feature set, and I’ll be able to move onto the skinning section of the editor. After that’s done and the file format is (hopefully) finalized, I’ll turn my sights on building a small utility for converting my old skeletons and animations to the new system. After all, I don’t want to lose all the work I did animating those damned things!
Through all of this, I’m starting to get the hang of .NET and managed C++. Despite some of my issues with the syntax and base structures you have to work with, managed C++ isn’t that horrible… and the access to the .NET components is worth it. This is the easiest that GUI development has ever been for me. The issue comes in when I want to interface my work-in-progress C++ animation library with the managed C++ editor, and that stuff can be incredibly irritating. Fortunately, most of the frustrating work there has already been done, so I can procede on the rest of this damned thing without incident.
Oh, shit, I just invoked Murphy’s Law, didn’t I? Oops.
-Ian