3D引擎动画设计中的一个问题

最近遇到一个很隐晦的bug,我们有个需求需要将人物的动画进行替换,用完后再换回去。发现bug换回原始动画后,人物不见了。跟了很久,原来是我们使用 的引擎在处理动画时没有考虑到动画可能被替换,因此直接让动画修改了模型的一些属性但不能恢复。例如,原始动画具有修改bip01的 translation Z的动画track,而替换动画具有修改bip01的translation x,y,z的track,当替换动画使用后,人物的bip01的x,y,z都被修改了,所以如果动画切换回原始动画,只有z能被修改,x,y将停留在之前 修改后的值,因此人物看不见了。
因此引擎设计时应该保留人物的初始值,提供一个reset方法,使得切换动画时这些不被改变的值不受影响。

另外一个小问题,发现我们使用的引擎中,所有的属性都用一个字符串标示,在查找时是O(N)的字符串比较,这样效率似乎不好,应该可以改成hash map,当然如果只是loading时的处理倒也无伤大雅

你可能感兴趣的:(动画)