以前看D3D的时候,就发现骨骼动画是个有点难以掌握的东西。
但是也可以说,骨骼动画是3D齐次空间变换的集大成者,掌握了骨骼动画,差不多3D空间变换你也就掌握了。
其他所有的层级变换,基本上都不会脱离骨骼动画需要你了解的东西。
网上骨骼动画的demo多如牛毛,我空间想象能力不行,看过无数资料都不大明白骨骼怎么转,皮肤怎么蒙。况且那些基于DX、基于GL的代码都长的不行,难看的明白。
前两天vczh搞了个C#的弱智版的2D物理Engine,我今天就搞个C#和GDIPlus的低能版骨骼变换。虽然是2D的,但是原理和实现基本和3D的完全一样。希望这已经简单到不能再简单的代码能帮助大家搞明白骨骼动画是咋回事。
代码框架上都有注释了,矩阵使用的是Sharp3D的数学库,已经在包中了。不过也就用了矩阵乘法和矩阵-矢量乘法,还有一些矢量加减法。
源代码在此下载。
2楼的回帖给了一个地址,是关于骨骼运动变换的数学推理和理论解释,还讨论了左右手系的问题。理论上有问题的亲们可以参照此篇文章。
截图:
骨骼的初始状态
变换后的骨骼
加了一圈子顶点,这个虽然是2D的,但也是货真价实的蒙皮哈。