Nate 我无法打开您提供的Spine项目,这个工程的版本信息好像不正确。
您提到的运行时调整骨骼,可能也并不适合我们,因为我们的美术工作人员需要在Spine编辑器中预先预览确保每个动画的正确性,以及需要为每个角色的专有骨骼做额外的动画,在运行时调整骨骼,这对美术工作人员而言门槛太高了。
我提到的关于附件和骨骼相对位置不正确的问题,可能描述有点不准确,由于我无法打开您提供的工程,下面我通过提供一个具有图片说明的例子来尝试解释下我们遇到的问题。
上图中为骨架和角色A的适配情况,他们适配的很好,请关注红框内这个橙色的骨头。
而在角色B的皮肤中,由于角色B的肩宽和角色A不同,所以导入角色B之后,红框内的橙色骨头和角色B手臂的相对位置并不正确。
我们尝试用属于该皮肤的变换约束来调整橙色骨头的位置使之和角色B手臂相匹配。
但是当我们调整变换约束的同时,这个骨骼下面的附件和插槽也会一起移动,哪怕我们勾选了“附件不会被父骨骼影响的选项”
我们猜测可能是由于IK约束导致的,因为其他没有IK约束的骨骼,‘附件不会被父骨骼影响’这个功能能正常使用。而我们也需要Ik约束来制作动画效果,同时腿部也有同样的问题。
所以我们尝试了先把插槽从橙色骨头下移走,来确保移动橙色骨头的时候不会影响到插槽以及其内部附件的位置,在通过变换约束调整完橙色骨头位置和网格匹配之后,再把插槽放回橙色骨头下,并且设置此变换约束是角色B当前皮肤下才生效,让该变换约束不影响其他皮肤下的骨骼,通过这种方式,我们确实将骨骼调整到了一个匹配角色B网格的状态。
但是当我们切回角色A的皮肤之时,发现角色A的手臂区域插槽和骨骼的相对位置发生了变化,此时角色A的表现又变得异常了。
我们猜测可能是因为插槽是共用的,我们挪动插槽的举动改变了其和骨骼的相对位置,从而影响到了使用该插槽的所有皮肤。
是否有更好的办法解决我们的问题,如果没有很好的办法能解决这个问题的话,我们目前可能会考虑的做法是将每个角色单独做一个骨架,然后同一个角色的换装用皮肤功能制作,而非不同比例的角色用皮肤制作,这样在版本控制上,团队成员分布式开发制作动画还能避免Spine工程文件冲突。