4 ms·
How do you write an article on skeletal animation, and have zero examples of what that skeletal animation looks like?
by bufferoverflow 7y ago
How do you write an article on skeletal animation, and have zero examples of what that skeletal animation looks like?
- ninepoints 7y agoWorking on them! That said though, the audience of this article was originally meant to be animation engineers that have already "earned some stripes" and wanted to see the GA formulation.
- uglycoyote 7y agoI'm in the intended audience group then, as a game developer who works on animation regularly but only has a passing familiarity with geometric algebra. You could say I am "GA curious". But I'm afraid I didn't get much out of that article. I had hoped I would get more information about the benefits of using GA over standard matrix and quaternion methods. Instead, at the first mention of something GA related (which was motors) it was glossed over, as a hand wavy "don't worry about this". Later, pages of difficult math (which I skimmed over trying to find the punch line) were devoted to, if I understood, trying to do the equivalent of slerp that everyone is familiar with and is easy with quaternions (though perhaps just as complicated to derive). What I would have liked to have seen is an article that starts off with some motivation about what benefit one gets from looking at skeletal animation through this lense, for example, are there problems that vex people using standard methods which just don't occur when using GA?
- ninepoints 7y agoThanks for the feedback. You may find https://www.jeremyong.com/klein/geometry-potpourri/ https://www.jeremyong.com/klein/geometry-potpourri/ more approachable but I admit I don't have finalized material I'm completely satisfied with showing yet :( The math is definitely more easy to grok if you've seen/used Lie Algebra/Group formalisms before so that's another shortcoming, but the main thing GA gives us here is a "dual-quaternion slerp" which I literally could not find an implementation of anywhere! The formula for a quaternion slerp is actually not too hard to derive, but a dual-quaternion slerp is far more difficult. Part of the point of the post was that this was somewhat surprising to me (both that GA makes it approachable, and that dual-quaternion slerp implementations didn't exist in the wild).
- uglycoyote 7y agoThanks! I'm curious what motivated you to want to use a dual quaternion or why you want a slerp algorithm for that. I have yet to run across a use for a dual quaternion. Wikipedia says that they are used in mechanics to represent rigid transformations. That sounds useful for animation but most animation or computer graphics people would represent a rigid transformations with a quaternion and a translation vector, and if interpolating a rigid transformations they would slerp the quat and linearly interpolate the translation. So I'm not sure what the advantage of a dual quaternion would be in this context, or do you use dual quaternions in some completely different way?
- ninepoints 7y agoThanks for the questions. Indeed many animation libraries store the quaternion and translation as separate components. There are a few reasons I use dual-quaternions in my own code. First, because I can "slerp" them, this means that when I compress keyframes, and can perform better quality fits (potentially less error and fewer keyframes needed). The dual-quaternion has uses in skinning which I'm sure you're aware of, but if the base transformation is a dual quaternion, I can more efficiently morph neighboring vertices as well (I've ported the dual-quaternion application to shader code as well). One optimization that GA makes clear is the ability to factor out terms when applying a dual quaternion to a number of entities all at once which makes it almost as efficient as a quat-translation while conserving energy as well. Finally, the dual-quat representation is beneficial when modeling kinematic motion specifically (not necessarily artist-authored) which can be useful in contexts beyond games (e.g. robotics, deep-learning, computer vision), but also inverse kinematics (which unfortunately I haven't had time to write about yet)
- modeless 7y agoMight I suggest some WebGL demos? You should be able to compile Klein with emscripten fairly easily.
- ninepoints 7y agoYup that's a good suggestion. I actually don't even need to compile to wasm for much of it (I have it partially ported to GLSL already)