一种动作资源风格转换方法及系统

文档序号:1954830 发布日期:2021-12-10 浏览:8次 >En<

阅读说明:本技术 一种动作资源风格转换方法及系统 (Action resource style conversion method and system ) 是由 刘德建 温荣泉 陈宏展 于 2021-08-25 设计创作,主要内容包括:本发明提供了一种动作资源风格转换方法,所述方法基于角色数据来生成新风格动作资源,所述方法为:输入角色数据,碰撞体管理模块将基于角色数据生成贴合角色模型的角色部件碰撞体集合;动作资源处理模块读取动作资源帧数据加入动作资源帧数据队列中;通过碰撞检测模块检测碰撞体管理模块中角色部件的碰撞情况,计算角色部件骨骼节点的目标位置;通过反向运动模块计算碰撞检测模块中角色部件骨骼节点目标位置并计算关联骨骼节点的目标位置;通过肌肉空间模块根据角色数据生成角色肌肉空间;判断动作资源帧数据队列中是否还有其他动作资源帧数据;本发明能够通过对角色数据的识别生成更贴合当前角色的新风格动作资源风格类型。(The invention provides an action resource style conversion method, which generates new style action resources based on role data, and comprises the following steps: inputting role data, and generating a role component collision body set attached to a role model based on the role data by a collision body management module; the action resource processing module reads action resource frame data and adds the action resource frame data into an action resource frame data queue; detecting the collision condition of the role component in the collision body management module through a collision detection module, and calculating the target position of the skeleton node of the role component; calculating the target position of the skeleton node of the role component in the collision detection module through a reverse motion module and calculating the target position of the related skeleton node; generating a role muscle space according to the role data through a muscle space module; judging whether other action resource frame data exist in the action resource frame data queue; the invention can generate a new style action resource style type more fitting the current role by identifying the role data.)

一种动作资源风格转换方法及系统

技术领域

本发明涉及角色动作风格转换技术领域,特别是一种动作资源风格转换方法及系统。

背景技术

现有技术在动作资源生产过程中对生产成本优化有限,仅减少少量基础动作资源的生产成本,动作资源的细调部分还需要大量的美术成本,无法实现动作资源自动转换为新风格动作资源。

发明内容

为克服上述问题,本发明的目的是提供一种能够通过对角色数据的识别生成更贴合当前角色的新风格动作资源风格类型的方法。

本发明采用以下方案实现:一种动作资源风格转换方法,所述方法基于角色数据来生成新风格动作资源,所述方法为:

输入角色数据,碰撞体管理模块将基于角色数据生成贴合角色模型的角色部件碰撞体集合,将角色数据进行识别,选择每个角色部件适配的碰撞体类型;

输入动作资源,动作资源处理模块读取动作资源帧数据加入动作资源帧数据队列中,从动作资源帧数据队列中读取一个动作资源帧数据并应用至新风格角色上;

通过碰撞检测模块检测碰撞体管理模块中角色部件的碰撞情况,计算角色部件骨骼节点的目标位置;

通过反向运动模块计算碰撞检测模块中角色部件骨骼节点目标位置并计算关联骨骼节点的目标位置;

通过肌肉空间模块根据角色数据生成角色肌肉空间,包括根据反向运动模块中的骨骼节点目标位置更新肌肉空间数据,驱动角色骨骼节点运动呈现适配当前新风格角色的动作资源帧数据并记录;

判断动作资源帧数据队列中是否还有其他动作资源帧数据,是,则通过动作资源处理模块生成新风格动作资源,否,则从动作资源帧数据队列中读取一个动作资源帧数据并应用至新风格角色上,实现通过角色数据来生成新风格动作资源。

进一步的,所述碰撞体管理模块能够基于角色数据生成贴合角色模型的角色部件碰撞体集合,具体为:步骤S11、输入角色数据,读取角色骨骼节点,判断角色骨骼节点队列是否为空,是,则完成角色部件碰撞体集合生成;否,则从角色骨骼节点队列中读取一个骨骼节点;步骤S12、判断读取的骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点的关联部件骨骼节点信息,将所有角色关联部件骨骼节点加入角色关联部件骨骼节点队列;否,判断角色骨骼节点队列中是否还有其他角色骨骼节点;步骤S13、判断角色骨骼节点队列中是否还有其他角色骨骼节点,是,则从角色骨骼节点队列中读取一个骨骼节点,否,完成角色部件碰撞体集合生成;步骤S14、判断角色关联部件骨骼节点队列是否为空,是,则判断角色骨骼节点队列中是否还有其他骨骼节点,否,则从角色关联部件骨骼节点队列中读取一个角色关联部件骨骼节点;步骤S15、获取角色骨骼节点与角色关联部件骨骼节点在角色蒙皮数据中关联的顶点与顶点权重数据加入顶点数据队列,从顶点数据队列删除小玉对应角色骨骼节点类型保留权重的顶点数据;步骤S16、从顶点数据队列删除零散的无效顶点数据,创建角色骨骼节点对应碰撞体类型的碰撞体,基于角色骨骼节点及角色关联部件骨骼节点数据计算并设置碰撞体中心位置;步骤S17、基于顶点数据队列计算并设置碰撞体大小与其他碰撞体参数,将创建的碰撞体加入角色部件碰撞体集合,判断角色关联部件骨骼节点队列中是否还有其他角色关联部件骨骼节点,是,则从角色关联部件骨骼节点队列中读取一个角色关联部件骨骼节点,否,则判断角色骨骼节点队列中是否还有其他角色骨骼节点。

进一步的,所述动作资源处理模块能够将角色动作资源解析为动作资源帧数据队列,具体为:步骤S21、输入动作资源,创建一个动作资源帧数据队列;步骤S22、获取角色动作资源总帧数,记录当前帧数为0;步骤S23、判断当前帧数是否小于角色动作资源总帧数,是,则应用动作资源的当前帧状态,否,则返回动作资源帧数据队列;步骤S24、活的当前帧的动作资源数据并加入动作资源帧数据队列,当前帧数加1,继续判断当前帧数是否小于动作资源总帧数。

进一步的,所述动作资源处理模块通过适配当前风格模型的动作资源帧数据队列生成新风格动作资源,具体为:步骤S31、输入适配当前角色风格模型的动作资源帧数据队列,记录为新动作资源帧数据队列;步骤S32、创建一个新动作资源,判断新动作资源帧数据队列是否为空,是,则完成新风格动作资源生成,否,则从新动作资源帧数据队列中读取一个动作资源帧数据;步骤S33、将当前动作资源帧数据中的数据写入角色动作资源,判断新动作资源帧数据队列中是否还有其他动作资源帧数据,是,则从新动作资源帧数据队列中读取一个动作资源帧数据,否,则读取新动作资源的帧数据动作曲线队列;步骤S34、判断帧数据动作曲线队列是否为空,是,则完成新风格动作资源生成,否,则从帧数据动作曲线队列中读取一条帧数据动作曲线;步骤S35、将这条帧数据动作曲线上的帧数据按直线与二次贝塞尔曲线拟合后获得关键帧数据动作曲线,将关键帧数据动作曲线重新写入新动作资源;步骤S36、判断帧数据动作曲线队列中是否还有其他帧数据动作曲线,是,则从帧数据动作曲线队列中读取一跳帧数据动作曲线,否,则完成新风格动作资源生成。

进一步的,所述碰撞体检测模块通过对角色部件碰撞体集合中的碰撞体碰撞情况检测,实现计算角色部件骨骼节点目标位置,具体为:步骤S41、输入播放动作姿势的角色数据,读取角色部件信息,将所有角色部件加入角色部件队列;步骤S42、判断角色部件是否为空,是,则完成角色部件骨骼节点的目标位置计算,否,则判断上一帧角色部件碰撞体集合数据是否为空;步骤S43、判断上一帧角色部件碰撞体集合数据是否为空,是,则记录当前角色部件碰撞体集合数据为上一帧角色部件碰撞体集合数据,完成角色部件骨骼节点的目标位置计算,否,则从角色部件队列中读取一个角色部件;步骤S44、获取此角色部件的碰撞体集合数据,从根碰撞体向末端碰撞体依次加入碰撞体队列;步骤S45、判断碰撞体队列是否为空,是,则判断角色部件队列中是否还有其他角色部件,否,则从碰撞体队列中读取一个碰撞体;步骤S46、判断角色部件队列中是否还有其他角色部件,是,则从角色部件队列中读取一个角色部件,否,则记录挡圈角色部件碰撞体集合数据为上一帧角色部件碰撞体集合数据;步骤S47、将此碰撞体与上一帧角色部件的碰撞体集合数据中非当前角色部件的碰撞体逐个进行碰撞检测;步骤S48、判断是否产生碰撞体集合,是,则将当前碰撞体关联的末端节点向上一帧位置移动至不产生碰撞,记录当前碰撞体关联的末端节点的目标位置为当前末端节点所在位置否,则记录当前碰撞体关联的末端节点的目标位置为当前末端节点所在位置;步骤S49、判断碰撞体队列中是否还有其他碰撞体,是,则从碰撞体队列中读取一个碰撞体,否,则判断角色部件队列中是否还有其他角色部件。

进一步的,所述反向运动模块计算关联骨骼节点目标位置,具体为:步骤S51、输入播放动作姿势的角色数据与角色部件骨骼节点的目标位置,读取角色部件信息,将所有角色部件加入角色部件队列;步骤S52、判断角色部件队列是否为空,是,则完成关联骨骼节点目标位置计算,否,则判断上一帧角色部件骨骼节点的目标位置集合数据是否为空;步骤S53、判断上一帧角色部件骨骼节点的目标位置集合数据是否为空,是,则记录角色部件骨骼节点的目标位置集合数据为上一帧角色部件骨骼节点的目标位置集合数据,完成关联骨骼节点目标位置计算,否,从角色部件队列中读取一个角色部件,记录当前角色部件的动作执行比重为100%,获取此角色部件的骨骼节点数据,从末端骨骼节点向根骨骼节点依次加入骨骼节点队列;步骤S54、判断骨骼节点队列是否为空,是,则判断角色部件队列中是否还有其他角色部件,否,则从骨骼节点队列中读取一个骨骼节点,获取骨骼节点当前位置、目标位置、上一帧位置,计算目标位置在上一帧位置到当前位置的比重;步骤S55、判断角色部件队列中是否还有其他角色部件,是,则从角色部件队列中读取一个角色部件,否,记录角色部件骨骼节点的目标位置集合数据为上一帧角色部件骨骼节点的目标位置集合数据;步骤S56、判断当前比重是否小于当前角色部件的动作执行比重,是,则更新当前角色部件的动作执行比重为当前比重,否,则向上一帧位置移动目标位置到当前角色部件的动作执行比重;步骤S57、判断骨骼节点队列中是否还有其他骨骼节点,是,则从骨骼节点队列中读取一个骨骼节点,否,则判断角色部件队列中是否还有其他角色部件。

进一步的,所述肌肉空间模块根据角色数据生成角色肌肉空间,具体为:步骤S61、输入角色数据,创建一个默认角色肌肉空间实例,读取角色骨骼节点信息,将所有角色骨骼节点加入骨骼节点队列;步骤S62、判断骨骼节点队列是否为空,是,则完成角色肌肉空间生成,否,则从骨骼节点队列中读取一个角色骨骼节点;步骤S63、判断角色骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点的可旋转范围,将角色部件骨骼节点信息与其可旋转范围加入角色肌肉空间的部件骨骼节点队列中,否,则判断骨骼节点队列中是否还有其他骨骼节点;步骤S64、判断骨骼节点队列中是否还有其他骨骼节点,是,则从骨骼节点队列中读取一个角色骨骼节点,否,则完成角色肌肉空间生成。

进一步的,所述肌肉空间模块根据骨骼节点目标位置更新肌肉空间数据,具体为:步骤S71、输入角色骨骼节点目标位置数据,读取角色骨骼节点数据,将所有角色骨骼节点加入骨骼节点队列;步骤S72、判断骨骼节点队列是否为空,是,则完成角色肌肉空间数据更新,否,则从骨骼节点队列中读取一个角色骨骼节点;步骤S73、判断角色骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点关联的父骨骼节点,否,则将当前角色骨骼节点标记为已处理,从骨骼节点队列中移除当前骨骼节点;步骤S74、判断父骨骼节点是否在骨骼节点队列中,是,则将当前角色骨骼节点移至骨骼节点队列最后一个位置,否,则判断父骨骼节点是否有大于一个的直接关联子部件骨骼节点;步骤S75、判断骨骼节点队列中是否还有角色骨骼节点,是,则将当前角色骨骼节点移至骨骼节点队列最后一个位置,否,则完成角色肌肉空间数据更新;步骤S76、判断父骨骼节点是否有大于一个的直接关联子部件骨骼节点,是,则将当前角色骨骼节点标记为已处理,否,则计算通过父骨骼节点旋转让角色骨骼节点朝向目标位置需要的旋转角度,读取父骨骼节点在部件骨骼节点队列中记录的可旋转范围;步骤S77、判断旋转角度是否在可旋转范围内,是,则父骨骼节点旋转对应的旋转角度,记录父骨骼节点的旋转角度到骨骼节点当前旋转角度队列中,将当前骨骼节点标记为已处理,否,则在可旋转范围内得到最接近的旋转角度,父骨骼节点旋转对应的旋转角度。

进一步的,所述肌肉空间模块驱动角色骨骼节点运动获得适配当前风格模型的动作资源帧数据并记录,具体为:步骤S81、输入肌肉空间数据,读取角色骨骼节点当前旋转角度队列中的骨骼节点数据加入骨骼节点队列;步骤S82、判断骨骼节点队列是否为空,是,则获得适配当前风格模型的动作资源帧数据,记录获得的动作资源帧数据,否,则从骨骼节点队列中读取一个角色骨骼节点,将当前骨骼节点旋转至记录的当前旋转角度,当前角色骨骼节点的所欲子部件骨骼节点位置绕当前骨骼节点位置旋转当前旋转角度,当前角色骨骼节点的所有子部件骨骼节点位置获得新位置;步骤S83、判断骨骼节点队列中是否还有其他骨骼节点,是,则从骨骼节点队列中读取一个骨骼节点,否,则获得适配当前风格模型的动作资源帧数据,记录获得的动作资源帧数据,并结束流程。

进一步的,所述角色数据包括但不限于角色模型网格数据、角色蒙皮数据、角色骨骼节点数据。

本发明还提供了一种动作资源风格转换系统,所述系统包括有一服务器,所述服务器安装有如权利要求1所述的碰撞体管理模块、动作资源处理模块、碰撞检测模块、反向运动模块和肌肉空间模块;

输入角色数据,碰撞体管理模块将基于角色数据生成贴合角色模型的角色部件碰撞体集合,将角色数据进行识别,选择每个角色部件适配的碰撞体类型;

输入动作资源,动作资源处理模块读取动作资源帧数据加入动作资源帧数据队列中,从动作资源帧数据队列中读取一个动作资源帧数据并应用至新风格角色上;

通过碰撞检测模块检测碰撞体管理模块中角色部件的碰撞情况,计算角色部件骨骼节点的目标位置;

通过反向运动模块计算碰撞检测模块中角色部件骨骼节点目标位置并计算关联骨骼节点的目标位置;

通过肌肉空间模块根据角色数据生成角色肌肉空间,包括根据反向运动模块中的骨骼节点目标位置更新肌肉空间数据,驱动角色骨骼节点运动呈现适配当前新风格角色的动作资源帧数据并记录;

判断动作资源帧数据队列中是否还有其他动作资源帧数据,是,则通过动作资源处理模块生成新风格动作资源,否,则从动作资源帧数据队列中读取一个动作资源帧数据并应用至新风格角色上,实现通过角色数据来生成新风格动作资源。

进一步的,所述碰撞体管理模块能够基于角色数据生成贴合角色模型的角色部件碰撞体集合,具体为:步骤S11、输入角色数据,读取角色骨骼节点,判断角色骨骼节点队列是否为空,是,则完成角色部件碰撞体集合生成;否,则从角色骨骼节点队列中读取一个骨骼节点;步骤S12、判断读取的骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点的关联部件骨骼节点信息,将所有角色关联部件骨骼节点加入角色关联部件骨骼节点队列;否,判断角色骨骼节点队列中是否还有其他角色骨骼节点;步骤S13、判断角色骨骼节点队列中是否还有其他角色骨骼节点,是,则从角色骨骼节点队列中读取一个骨骼节点,否,完成角色部件碰撞体集合生成;步骤S14、判断角色关联部件骨骼节点队列是否为空,是,则判断角色骨骼节点队列中是否还有其他骨骼节点,否,则从角色关联部件骨骼节点队列中读取一个角色关联部件骨骼节点;步骤S15、获取角色骨骼节点与角色关联部件骨骼节点在角色蒙皮数据中关联的顶点与顶点权重数据加入顶点数据队列,从顶点数据队列删除小玉对应角色骨骼节点类型保留权重的顶点数据;步骤S16、从顶点数据队列删除零散的无效顶点数据,创建角色骨骼节点对应碰撞体类型的碰撞体,基于角色骨骼节点及角色关联部件骨骼节点数据计算并设置碰撞体中心位置;步骤S17、基于顶点数据队列计算并设置碰撞体大小与其他碰撞体参数,将创建的碰撞体加入角色部件碰撞体集合,判断角色关联部件骨骼节点队列中是否还有其他角色关联部件骨骼节点,是,则从角色关联部件骨骼节点队列中读取一个角色关联部件骨骼节点,否,则判断角色骨骼节点队列中是否还有其他角色骨骼节点。

进一步的,所述动作资源处理模块通过适配当前风格模型的动作资源帧数据队列生成新风格动作资源,具体为:步骤S31、输入适配当前角色风格模型的动作资源帧数据队列,记录为新动作资源帧数据队列;步骤S32、创建一个新动作资源,判断新动作资源帧数据队列是否为空,是,则完成新风格动作资源生成,否,则从新动作资源帧数据队列中读取一个动作资源帧数据;步骤S33、将当前动作资源帧数据中的数据写入角色动作资源,判断新动作资源帧数据队列中是否还有其他动作资源帧数据,是,则从新动作资源帧数据队列中读取一个动作资源帧数据,否,则读取新动作资源的帧数据动作曲线队列;步骤S34、判断帧数据动作曲线队列是否为空,是,则完成新风格动作资源生成,否,则从帧数据动作曲线队列中读取一条帧数据动作曲线;步骤S35、将这条帧数据动作曲线上的帧数据按直线与二次贝塞尔曲线拟合后获得关键帧数据动作曲线,将关键帧数据动作曲线重新写入新动作资源;步骤S36、判断帧数据动作曲线队列中是否还有其他帧数据动作曲线,是,则从帧数据动作曲线队列中读取一跳帧数据动作曲线,否,则完成新风格动作资源生成。

本发明的有益效果在于:本发明通过生成角色碰撞体与肌肉空间,使用碰撞检测、反向运动计算、肌肉空间按帧更新动作资源,让3D角色动作资源在每一帧都保留原有美术效果的同时能更贴合当前角色的风格类型;本发明通过将动作资源进行风格转换生成新风格动作资源,减少了3D角色动作生产消耗,缩短了3D角色动作相关项目的开发周期,加快了开发进度。

附图说明

图1是本发明的方法流程示意图。

图2是本发明一实施例的碰撞体管理模块能够基于角色数据生成贴合角色模型的角色部件碰撞体集合的示意图。

图3是本发明一实施例的动作资源处理模块读取动作资源帧数据加入动作资源帧数据队列的示意图。

图4是本发明一实施例的动作资源处理模块生成新风格动作资源的示意图。

图5是本发明一实施例的碰撞检测模块检测角色部件的碰撞情况计算角色部件骨骼节点的目标位置的示意图。

图6是本发明一实施例的反向运动模块计算关联骨骼节点目标位置的示意图。

图7是本发明一实施例的肌肉空间模块根据角色数据生成角色肌肉空间的示意图。

图8是本发明一实施例的肌肉空间模块根据骨骼节点目标位置更新肌肉空间数据的示意图。

图9是本发明一实施例的肌肉空间模块驱动角色骨骼节点运动获得适配当前风格模型的动作资源帧数据并记录的示意图。

具体实施方式

下面结合附图对本发明做进一步说明。

一种动作资源风格转换方法,所述方法基于角色数据来生成新风格动作资源,所述方法为:

输入角色数据,碰撞体管理模块将基于角色数据生成贴合角色模型的角色部件碰撞体集合,将角色数据进行识别,选择每个角色部件适配的碰撞体类型;

输入动作资源,动作资源处理模块读取动作资源帧数据加入动作资源帧数据队列中,从动作资源帧数据队列中读取一个动作资源帧数据并应用至新风格角色上;

通过碰撞检测模块检测碰撞体管理模块中角色部件的碰撞情况,计算角色部件骨骼节点的目标位置;

通过反向运动模块计算碰撞检测模块中角色部件骨骼节点目标位置并计算关联骨骼节点的目标位置;

通过肌肉空间模块根据角色数据生成角色肌肉空间,包括根据反向运动模块中的骨骼节点目标位置更新肌肉空间数据,驱动角色骨骼节点运动呈现适配当前新风格角色的动作资源帧数据并记录;

判断动作资源帧数据队列中是否还有其他动作资源帧数据,是,则通过动作资源处理模块生成新风格动作资源,否,则从动作资源帧数据队列中读取一个动作资源帧数据并应用至新风格角色上,实现通过角色数据来生成新风格动作资源。

下面结合一实施例对本发明作进一步说明:

请参阅图1所示,本发明的一种动作资源风格转换方法,本发明基于角色数据来生成新风格动作资源,然后通过对新风格角色数据的识别生成生成贴合角色模型的角色部件碰撞体集合与角色肌肉空间,将动作资源解析为动作资源帧数据队列,逐帧处理动作资源帧数据,碰撞检测模块检测角色部件的碰撞情况计算部件骨骼节点的目标位置,反向运动模块计算关联骨骼节点目标位置,然后肌肉空间模块根据骨骼节点目标位置更新肌肉空间数据并驱动角色骨骼节点运动获得适配当前风格模型的动作资源帧数据,最后通过动作资源处理模块生成新风格动作资源,生成的新风格动作资源保留原有美术效果的同时能更贴合当前角色的风格类型。

本发明中角色数据的定义包括但不限于角色模型网格数据、角色蒙皮数据、角色骨骼节点数据等。

本发明中角色部件的定义包括但不限于头、身体、左手、右手、左脚、右脚等。

本发明中碰撞体的定义包括但不限于球形碰撞体、圆柱型碰撞体、长方体碰撞体等。

本发明中角色骨骼节点的定义是角色身上可以驱动模型顶点发生改变的节点,一个角色部件包含多个角色骨骼节点。

本发明中肌肉空间的定义是3D角色的所有骨骼节点可以旋转运动区域范围的集合,每个骨骼在对应旋转运动区域范围内的旋转运动是符合角色肌肉的运动规律的。

本发明中动作资源帧数据的定义是动作资源在这一帧中所有关联骨骼节点的位置、旋转、放缩等数据值的集合。

本发明中动作曲线的定义为动作资源在一个角色骨骼节点上一个数值变化的帧数据的连线,例如:一个角色骨骼节点位置的X轴数值的变化的帧数据的连线。

本发明中帧数据动作曲线的定义为以每帧一个数据的形式保存的动作曲线。

本发明中关键帧数据动作曲线的定义为以关键帧曲线(直线或二次贝塞尔曲线)连接而成的动作曲线。

其中:

1)动作资源处理模块

该模块包含将动作资源解析为动作资源帧数据队列与通过适配当前风格模型的动作资源帧数据队列生成新风格动作资源两个功能。实现动作资源解析与生成的流程。

2)碰撞体管理模块

该模块实现基于角色数据自动生成贴合角色模型的角色部件碰撞体集合的功能,将角色数据进行识别,选择每个角色部件适配的碰撞体类型集合。

适配的碰撞体类型的定义为能让碰撞体更加贴合角色模型且不影响角色碰撞检测效果的基础碰撞体类型,基础碰撞体类型包括但不限于球形碰撞体、圆柱型碰撞体、长方体碰撞体等。

3)肌肉空间模块

该模块包含生成角色肌肉空间、根据骨骼节点目标位置更新肌肉空间数据、驱动骨骼节点运动呈现适配当前体型的动作姿势三个功能,实现了从肌肉空间生成、数据更新、数据应用的整个生命周期,在符合角色肌肉的运动规律的基础上,驱动骨骼节点运动获得适配当前风格模型的动作资源帧数据。

4)碰撞检测模块

该模块通过对角色部件碰撞体集合(在碰撞体管理模块中生成)中的碰撞体碰撞情况的检测,实现计算部件骨骼节点目标位置的功能。

5)反向运动模块

该模块实现通过碰撞检测模块中计算的部件骨骼节点目标位置计算关联骨骼节点的目标位置的功能。

本发明适用于所有风格类型3D角色的动作资源生产过程,包括但不限于写实风格动作资源生产过程、Q版卡通风格动作资源生产过程、其它3D角色风格的动作资源生产过程。

请参阅图2所示,所述碰撞体管理模块能够基于角色数据生成贴合角色模型的角色部件碰撞体集合,具体为:步骤S11、输入角色数据,读取角色骨骼节点,判断角色骨骼节点队列是否为空,是,则完成角色部件碰撞体集合生成;否,则从角色骨骼节点队列中读取一个骨骼节点;

步骤S12、判断读取的骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点的关联部件骨骼节点信息,将所有角色关联部件骨骼节点加入角色关联部件骨骼节点队列;否,判断角色骨骼节点队列中是否还有其他角色骨骼节点;

步骤S13、判断角色骨骼节点队列中是否还有其他角色骨骼节点,是,则从角色骨骼节点队列中读取一个骨骼节点,否,完成角色部件碰撞体集合生成;

步骤S14、判断角色关联部件骨骼节点队列是否为空,是,则判断角色骨骼节点队列中是否还有其他骨骼节点,否,则从角色关联部件骨骼节点队列中读取一个角色关联部件骨骼节点;

步骤S15、获取角色骨骼节点与角色关联部件骨骼节点在角色蒙皮数据中关联的顶点与顶点权重数据加入顶点数据队列,从顶点数据队列删除小玉对应角色骨骼节点类型保留权重的顶点数据;

步骤S16、从顶点数据队列删除零散的无效顶点数据,创建角色骨骼节点对应碰撞体类型的碰撞体,基于角色骨骼节点及角色关联部件骨骼节点数据计算并设置碰撞体中心位置;

步骤S17、基于顶点数据队列计算并设置碰撞体大小与其他碰撞体参数,将创建的碰撞体加入角色部件碰撞体集合,判断角色关联部件骨骼节点队列中是否还有其他角色关联部件骨骼节点,是,则从角色关联部件骨骼节点队列中读取一个角色关联部件骨骼节点,否,则判断角色骨骼节点队列中是否还有其他角色骨骼节点。

请参阅图3所示,所述动作资源处理模块能够将角色动作资源解析为动作资源帧数据队列,具体为:

步骤S21、输入动作资源,创建一个动作资源帧数据队列;

步骤S22、获取角色动作资源总帧数,记录当前帧数为0;

步骤S23、判断当前帧数是否小于角色动作资源总帧数,是,则应用动作资源的当前帧状态,否,则返回动作资源帧数据队列;

步骤S24、活的当前帧的动作资源数据并加入动作资源帧数据队列,当前帧数加1,继续判断当前帧数是否小于动作资源总帧数。

请参阅图4所示,所述动作资源处理模块通过适配当前风格模型的动作资源帧数据队列生成新风格动作资源,具体为:步骤S31、输入适配当前角色风格模型的动作资源帧数据队列,记录为新动作资源帧数据队列;

步骤S32、创建一个新动作资源,判断新动作资源帧数据队列是否为空,是,则完成新风格动作资源生成,否,则从新动作资源帧数据队列中读取一个动作资源帧数据;步骤S33、将当前动作资源帧数据中的数据写入角色动作资源,判断新动作资源帧数据队列中是否还有其他动作资源帧数据,是,则从新动作资源帧数据队列中读取一个动作资源帧数据,否,则读取新动作资源的帧数据动作曲线队列;

步骤S34、判断帧数据动作曲线队列是否为空,是,则完成新风格动作资源生成,否,则从帧数据动作曲线队列中读取一条帧数据动作曲线;

步骤S35、将这条帧数据动作曲线上的帧数据按直线与二次贝塞尔曲线拟合后获得关键帧数据动作曲线,将关键帧数据动作曲线重新写入新动作资源;

步骤S36、判断帧数据动作曲线队列中是否还有其他帧数据动作曲线,是,则从帧数据动作曲线队列中读取一跳帧数据动作曲线,否,则完成新风格动作资源生成。

请参阅图5所示,所述碰撞体检测模块通过对角色部件碰撞体集合中的碰撞体碰撞情况检测,实现计算角色部件骨骼节点目标位置,具体为:步骤S41、输入播放动作姿势的角色数据,读取角色部件信息,将所有角色部件加入角色部件队列;

步骤S42、判断角色部件是否为空,是,则完成角色部件骨骼节点的目标位置计算,否,则判断上一帧角色部件碰撞体集合数据是否为空;

步骤S43、判断上一帧角色部件碰撞体集合数据是否为空,是,则记录当前角色部件碰撞体集合数据为上一帧角色部件碰撞体集合数据,完成角色部件骨骼节点的目标位置计算,否,则从角色部件队列中读取一个角色部件;

步骤S44、获取此角色部件的碰撞体集合数据,从根碰撞体向末端碰撞体依次加入碰撞体队列;

步骤S45、判断碰撞体队列是否为空,是,则判断角色部件队列中是否还有其他角色部件,否,则从碰撞体队列中读取一个碰撞体;

步骤S46、判断角色部件队列中是否还有其他角色部件,是,则从角色部件队列中读取一个角色部件,否,则记录挡圈角色部件碰撞体集合数据为上一帧角色部件碰撞体集合数据;

步骤S47、将此碰撞体与上一帧角色部件的碰撞体集合数据中非当前角色部件的碰撞体逐个进行碰撞检测;

步骤S48、判断是否产生碰撞体集合,是,则将当前碰撞体关联的末端节点向上一帧位置移动至不产生碰撞,记录当前碰撞体关联的末端节点的目标位置为当前末端节点所在位置否,则记录当前碰撞体关联的末端节点的目标位置为当前末端节点所在位置;

步骤S49、判断碰撞体队列中是否还有其他碰撞体,是,则从碰撞体队列中读取一个碰撞体,否,则判断角色部件队列中是否还有其他角色部件。

请参阅图6所示,所述反向运动模块计算关联骨骼节点目标位置,具体为:步骤S51、输入播放动作姿势的角色数据与角色部件骨骼节点的目标位置,读取角色部件信息,将所有角色部件加入角色部件队列;

步骤S52、判断角色部件队列是否为空,是,则完成关联骨骼节点目标位置计算,否,则判断上一帧角色部件骨骼节点的目标位置集合数据是否为空;

步骤S53、判断上一帧角色部件骨骼节点的目标位置集合数据是否为空,是,则记录角色部件骨骼节点的目标位置集合数据为上一帧角色部件骨骼节点的目标位置集合数据,完成关联骨骼节点目标位置计算,否,从角色部件队列中读取一个角色部件,记录当前角色部件的动作执行比重为100%,获取此角色部件的骨骼节点数据,从末端骨骼节点向根骨骼节点依次加入骨骼节点队列;

步骤S54、判断骨骼节点队列是否为空,是,则判断角色部件队列中是否还有其他角色部件,否,则从骨骼节点队列中读取一个骨骼节点,获取骨骼节点当前位置、目标位置、上一帧位置,计算目标位置在上一帧位置到当前位置的比重;

步骤S55、判断角色部件队列中是否还有其他角色部件,是,则从角色部件队列中读取一个角色部件,否,记录角色部件骨骼节点的目标位置集合数据为上一帧角色部件骨骼节点的目标位置集合数据;

步骤S56、判断当前比重是否小于当前角色部件的动作执行比重,是,则更新当前角色部件的动作执行比重为当前比重,否,则向上一帧位置移动目标位置到当前角色部件的动作执行比重;

步骤S57、判断骨骼节点队列中是否还有其他骨骼节点,是,则从骨骼节点队列中读取一个骨骼节点,否,则判断角色部件队列中是否还有其他角色部件。

请参阅图7所示,所述肌肉空间模块根据角色数据生成角色肌肉空间,具体为:步骤S61、输入角色数据,创建一个默认角色肌肉空间实例,读取角色骨骼节点信息,将所有角色骨骼节点加入骨骼节点队列;

步骤S62、判断骨骼节点队列是否为空,是,则完成角色肌肉空间生成,否,则从骨骼节点队列中读取一个角色骨骼节点;

步骤S63、判断角色骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点的可旋转范围,将角色部件骨骼节点信息与其可旋转范围加入角色肌肉空间的部件骨骼节点队列中,否,则判断骨骼节点队列中是否还有其他骨骼节点;

步骤S64、判断骨骼节点队列中是否还有其他骨骼节点,是,则从骨骼节点队列中读取一个角色骨骼节点,否,则完成角色肌肉空间生成。

请参阅图8所示,所述肌肉空间模块根据骨骼节点目标位置更新肌肉空间数据,具体为:步骤S71、输入角色骨骼节点目标位置数据,读取角色骨骼节点数据,将所有角色骨骼节点加入骨骼节点队列;

步骤S72、判断骨骼节点队列是否为空,是,则完成角色肌肉空间数据更新,否,则从骨骼节点队列中读取一个角色骨骼节点;

步骤S73、判断角色骨骼节点是否为角色部件骨骼节点,是,则获取此角色部件骨骼节点关联的父骨骼节点,否,则将当前角色骨骼节点标记为已处理,从骨骼节点队列中移除当前骨骼节点;

步骤S74、判断父骨骼节点是否在骨骼节点队列中,是,则将当前角色骨骼节点移至骨骼节点队列最后一个位置,否,则判断父骨骼节点是否有大于一个的直接关联子部件骨骼节点;

步骤S75、判断骨骼节点队列中是否还有角色骨骼节点,是,则将当前角色骨骼节点移至骨骼节点队列最后一个位置,否,则完成角色肌肉空间数据更新;

步骤S76、判断父骨骼节点是否有大于一个的直接关联子部件骨骼节点,是,则将当前角色骨骼节点标记为已处理,否,则计算通过父骨骼节点旋转让角色骨骼节点朝向目标位置需要的旋转角度,读取父骨骼节点在部件骨骼节点队列中记录的可旋转范围;

步骤S77、判断旋转角度是否在可旋转范围内,是,则父骨骼节点旋转对应的旋转角度,记录父骨骼节点的旋转角度到骨骼节点当前旋转角度队列中,将当前骨骼节点标记为已处理,否,则在可旋转范围内得到最接近的旋转角度,父骨骼节点旋转对应的旋转角度。

请参阅图9所示,所述肌肉空间模块驱动角色骨骼节点运动获得适配当前风格模型的动作资源帧数据并记录,具体为:步骤S81、输入肌肉空间数据,读取角色骨骼节点当前旋转角度队列中的骨骼节点数据加入骨骼节点队列;

步骤S82、判断骨骼节点队列是否为空,是,则获得适配当前风格模型的动作资源帧数据,记录获得的动作资源帧数据,否,则从骨骼节点队列中读取一个角色骨骼节点,将当前骨骼节点旋转至记录的当前旋转角度,当前角色骨骼节点的所欲子部件骨骼节点位置绕当前骨骼节点位置旋转当前旋转角度,当前角色骨骼节点的所有子部件骨骼节点位置获得新位置;

步骤S83、判断骨骼节点队列中是否还有其他骨骼节点,是,则从骨骼节点队列中读取一个骨骼节点,否,则获得适配当前风格模型的动作资源帧数据,记录获得的动作资源帧数据,并结束流程。

总之,本发明可应用于所有风格类型3D角色的动作资源生产过程。和常规的3D角色动作生产方式不同,本发明通过生成角色碰撞体与肌肉空间,使用碰撞检测、反向运动计算、肌肉空间按帧更新动作资源,让3D角色动作资源在每一帧都保留原有美术效果的同时能更贴合当前角色的风格类型。本发明解决了3D角色动作资源在不同风格角色上需要重新生产的问题。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:表情驱动方法、系统及计算机设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!