经过令人发指的4个月没有更新之后,我决定把维护了很多年的骨骼动画库grandpa开源,希望能发挥更大的价值。所有的代码和资源已经放在google code上,用网络营销的语言说,有兴趣的请
grandpa这个名字最早来源于著名的rad game tools的很牛鼻的granny动画中间件,据说已经over 2,400 titles shipped(其中包括大名鼎鼎的魔兽世界),当时非常崇拜,就随手敲了个grandpa作为名字,本来想之后再换一个酷一点的名字。结果这么多年一直懒的换,也用出感情了。
相对于其他类似的动画组件,grandpa的特点是比较适合网络游戏这种需要角色频繁换装的应用场景;另外在动画的融合,过渡,采样以及优先级控制上也都比较讲究;效率方面经过这么多年的优化,应该还算不错。详情可以参考grandpa的页面,就不在这里吹嘘了。
比较羞愧的是代码不太符合“开源标准”,完全是vc的编译环境,没有组织成很上流的cmake工程什么的,虽然库本身是纯c++的,不依赖任何其他组件,但所有demo和工具都是基于windows/d3d的,就不再花时间搞成伪跨平台形式了。事实上grandpa曾一度被移植到IOS上,只是最终没有应用在任何项目中。
最后,照例感谢一下李栋同学制作的demo资源(包括模型/动画/纹理),以及leon同学近期的贡献
下载Grandpa SDK 0.82 for Windows
去Grandpa主页
主要修改:
- DemoCamera类添加震动功能
- CameraDemo添加摄像机震动功能演示
- 添加Ragdoll功能演示
- 添加KinectDemo
- 添加极限性能演示CrowdDemo

微软刚发布了Kinect for Windows SDK,玩了两天,捣鼓出一个Demo
这一版SDK貌似只支持全身骨架识别,所以还不太适合pc游戏,因为要求的距离太远,还得站着玩,屏幕都看不清了
期待面部表情和手势识别的官方支持
应用了开源的tokamak物理引擎,如果换成别的物理引擎应该也不会有太大差别。调整参数花了一些时间,例如每个部位的尺寸大小,质量,关节方向,角度限制等等。比较麻烦的是躯干,因为其他的rigid body比如胳膊,腿什么的都是和骨骼一一对应的,但是躯干上一般会有好几节脊椎。目前只用一整个rigid body表示躯干,所以一旦进入ragdoll状态,后背的弯曲程度就不能再改变了,否则肩关节看起来就会“脱臼”。
ragdoll还是需要一个好用的编辑器才能大规模应用。
下载Grandpa SDK 0.81 for Windows
访问Grandpa主页
主要修改:
- 添加通用样条曲线采样器,支持float, Vector2, Vector3, Vector4, Quaternion等数据类型的样条插值
- 完善DemoCamera类,支持左手系或右手系坐标,支持z轴向上或y向上
- 添加摄像机动画演示工程CameraDemo
- 整理完善数学库
下载Grandpa SDK 0.8 for Windows
访问Grandpa主页
主要修改:
- 添加Viewer(模型查看器)工程
- cpu蒙皮效率提升约35%
- Vector4现在派生于Vector3,Vector3派生于Vector2
- 支持动画随模型一起加载( 默认为第一次播放时加载)
- 支持attachment模型和主体模型动画同步
- 提高Xml加载效率
- 加入DemoCamera类,替换原来的DXUTCamera
- IModel接口分解为IPartFunctions,IAnimationFunctions和ILodFunctions


Grandpa从设计之初就定位于跨平台,渲染API无关的库。核心代码仅依赖c++标准库,理论上可以在任何平台,用任何(基本)符合c++标准的编译器编译。
但是这次还是碰到了一些问题,主要还是VC用的时间太长了,没有意识到某些特性实际上是非标准的,例如:
- hash_map头文件的位置不同。大家都知道该容器是非标准的,在vc下该头文件和其他容器在一起,而gcc下在ext子目录中
- gcc警告最后一行非空(也就是说源代码文件最后一个字符必须是回车,标准的确是这么规定的),vc不会警告
- vc允许只声明enum,gcc不允许
- gcc没有“安全版”(带_s)的字符串处理函数
另外,Mac OS X(以及Linux等其他Unix系的操作系统)是用utf-8表示unicode,而Windows则采用utf-16,这一点也引起了一些小麻烦。
还有一个很讨厌,gcc居然不认识utf-8的bom(ef,bb,bf)。导致我所有的源代码文件都要改为multibytes编码
好在这些都是小问题,花了不到一天时间就都解决了。
特别感谢张志鹏同学,帮我把原来基于d3d的Demo移植到了Opengl es上。
另外从今天开始,Grandpa SDK开放svn更新,地址为 Http://www.multi-crash.com/release
推荐使用TortoiseSVN。