现在的位置: 首页 > 综合 > 正文

基于骨骼动画的生物拼接和人物动作系统设计

2012年12月06日 ⁄ 综合 ⁄ 共 1719字 ⁄ 字号 评论关闭

基于骨骼动画的生物拼接和人物动作系统设计

 

说明1:模型既指Mesh,又指Entity. 对于美工方面就是Mesh,对于程序方面就是Entity。文中会根据内容的不同交替使用“模型”和“实体”。

 

 

1、生物拼接规则
     1.1、生物组成划分

 

      为了美术资源复用,将一个人物分为若干部分,比如头/身/手/腿。人物由装备组成,一件装备对应一个或多个部分。美术制作人物也就变成了制作装备。将生物划分为若干部分,是实现换装的关键。

     1.2、美术制作

     美术首先制作一个完整的人物模型,然后按照之前的划分规则,将模型进行切割。所有的部分都应该保持相对位置不变动,这样在这些实体attach到节点上时,才能精确一致。(拼接规则一) 

2、基于骨骼动画的动作和骨骼组织策略。

      2.1、动作划分规则

      动作需要分类,比如走、跑、跳等。动作类型是抽象概念,适用于程序、策划、和美术三方。骨骼文件中的动作数量在原则上应该和动作类别的数量一致。当出现2边不对应的情况(一般是动画数量少于动作类别数量)就会使用标准肢势。 

      2.2、主骨骼

      在量产模型之前,应该先将骨骼制作出来。根据具体需求不同,可以制作多副骨骼,以后所有的模型,都应该根据这些骨骼进行制作。这一类骨骼,叫做主骨骼。即使2个主骨骼的体型完全不一样,也应该对之前划分的所有动作类型都制作相应的动作。这样在程序内部,就不需要根据不同的主骨骼进行动画名称查找了(当然,也可以根据骨骼名称和动作类型进行双主键的动画数据查找)不同体型的骨骼具有同样的动画集名称,这是实现多骨骼模型拼接的关键。

       2.3、独立骨骼

      和主骨骼相对的,存在一类模型对象,它们不使用主骨骼进行建摸,而是单独另外制作骨骼,比如翅膀、条带、披风等物件,这类骨骼,叫做独立骨骼。这些东西基本上都是中后期美术人手充足时添加上去的。这些附属物种类繁多,如果将这些部位附加到主骨骼上,将产生大量的冗余,并且会对后续主骨骼的动作开发产生很严重的影响。独立骨骼在制作动作的时候,也需要实现动作分类中的所有动作。  

       2.4、主实体和独立实体

      使用主骨骼的模型叫做主实体(PrimaryEntity),使用独立骨骼的实体叫做独立实体(AloneEntity)。多个主实体直接的拼接由拼接规则一来保证。独立实体在制作的时候,独立实体只需要以自己的根节点为标准进行制作,一般来说是原点。主骨骼需要设置一组连接点(LinkNode),这些连接点用来attach独立实体。比如在人物组成的“身体”部分设置一个“背”的连接点,这些连接点都是主骨骼的组成部分。独立实体需要知道自己往哪个连接点attach。(拼接规则二)

 3、动作的处理策略
     3.1、骨骼实例的混合

     一个生物在创建组成自己各个部分的实体后,进行共享骨骼实例操作。规则是以身体实体所使用的骨骼实力为主骨骼实例,将其他主实体共享该骨骼实例。(骨骼混合规则一)根据2.3和2.4的描述,装备是有可能不使用主骨骼的,对于独立实体,处理策略是一致的,对于使用同一独立骨骼的独立实体,以第1个加载的独立实体的骨骼实例作为这些实体的主骨骼实例。(骨骼混合规则二)之后出现的实体都参照以上2条骨骼混合规则。

     3.2、骨骼动画的存储和更新

     因为通过实体来操作骨骼实例,所以需要根据骨骼种类的数量(等同于经过骨骼实例混合后剩下的骨骼实例的数量),建立骨骼实例--实体对应关系表。在进行对象更新的时候,遍例该表,取出骨骼实例的动画集,根据2.1中定义的动作类别,步进对应的动画集。
     3.3、动作淡入淡出策略
     为了平滑2个动作的衔接过程,可以利用权重实现动作淡入淡出。这个时候需要建立2个列表:正在淡入的列表 FadeIn 和 正在淡出的列表 FadeOut. 假设综合权重为1,那么当一个动作淡入时,必然有一个动作淡出,2个动作的混合权重需要保持1。 根据不同的策略进行动作集之间的权重调整,可以采用时间累积,也可以采用不同的动作对应不同的混合时间。

PS : 本文写的很飘渺,比较适合寻求动作系统实现方案的朋友阅读。

抱歉!评论已关闭.