Today I (mostly) finished work on adding support for Tabs rather than a collapsible header for the Archival::ImGuiBackend. This allows quick navigation to different sections, rather than having to scroll down a lot or collapse a lot of headers.

ChIK-Tab-Editor

The original idea came about Monday, after I had added a new dragon to the battling game I'm working on. It was meant to replace an older dragon model, which had a different skeleton. The CharacterIK was meant to allow for this very thing quickly adding new creatures to the game. However, it was tedious trying to match up the new bones names for the limbs, in large part because of the poor UI. So, I gave a bit of thought to how I would set up an editor to streamline the process of adding new creatures.

The main thing was to order things sensibly the whole CharacterIK fails to work if it lacks the Origin Node (root bone, if you will). So this would need to be the first thing selected. Next, most of the animations are driven by the phase, which is determined by the phase in the leg's stride. So after the origin/body stuff, we would need the legs. Then we can proceed up the body to spine and arms and wings and the extra stuff like mouth and hair motion. To keep the groupings sensible, motion of the origin node (the bobbing/swaying while walking, for example) are on the same Body tab as the Origin Node, even though they likely require the legs to be chosen first to be visible.

This overall workflow gave me the idea for tabs. Each tab would allow you to complete some part of the animation, and could even have a "Next" button for when I was finished with it (this is not yet implemented). I have some other ideas for how to make the editing more streamline, mainly about how to make viewing the results easier, but I won't discuss them now as that is another topic for another time (both to implement in code and to write about).

Here you can see the original notes I wrote for it, to get some insight into my UI design process. ChIK-Tab-Editor-Notes

As a fun tidbit, if you pay attention to the gif of the implementation, you'll note that I actually made a mistake. The travelWheelCircumference should actually be a part of the Body grouping.

Previous Post Next Post