CN111968204B - 一种骨骼模型的运动展示方法和装置 - Google Patents

一种骨骼模型的运动展示方法和装置 Download PDF

Info

Publication number
CN111968204B
CN111968204B CN202010740371.9A CN202010740371A CN111968204B CN 111968204 B CN111968204 B CN 111968204B CN 202010740371 A CN202010740371 A CN 202010740371A CN 111968204 B CN111968204 B CN 111968204B
Authority
CN
China
Prior art keywords
physical
animation
model
data
rigid body
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010740371.9A
Other languages
English (en)
Other versions
CN111968204A (zh
Inventor
刘洋
何文峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Perfect World Beijing Software Technology Development Co Ltd
Original Assignee
Perfect World Beijing Software Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Perfect World Beijing Software Technology Development Co Ltd filed Critical Perfect World Beijing Software Technology Development Co Ltd
Priority to CN202010740371.9A priority Critical patent/CN111968204B/zh
Publication of CN111968204A publication Critical patent/CN111968204A/zh
Application granted granted Critical
Publication of CN111968204B publication Critical patent/CN111968204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请涉及一种骨骼模型的运动展示方法和装置,其中,该方法包括:通过动画系统展示骨骼模型的运动;在检测到骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示骨骼模型运动的系统从动画系统切换为一物理动画系统;在物理动画中,骨骼模型上的物理事件发生的过程中,通过物理系统根据动画系统提供的动画数据和物理事件中产生的驱动数据进行整合,以展示骨骼模型的运动;在检测到骨骼模型上新的触发事件,将展示骨骼模型运动的物理动画系统切换回动画系统或物理系统。本申请解决了相关技术中在对骨骼模型进行运动展示的过程中展示的运动效果较差的技术问题。

Description

一种骨骼模型的运动展示方法和装置
技术领域
本申请涉及计算机领域,尤其涉及一种骨骼模型的运动展示方法和装置。
背景技术
相关技术中控制场景中的虚拟对象运动时可以仅通过动画来控制对象的模型运动,或者仅通过物理系统控制模型运动。但这些方式所展现的效果都无法达到预期,仅通过动画来控制的方式可能会出现模型穿墙而过等违反常理的画面出现,而仅通过物理系统控制的方式可能会导致运动过程难以掌控并且也无法展现更好的美术效果。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种骨骼模型的运动展示方法和装置,以至少解决相关技术中在对骨骼模型进行运动展示的过程中展示的运动效果较差的技术问题。
根据本申请实施例的一个方面,提供了一种骨骼模型的运动展示方法,骨骼模型上设置有动画系统和物理系统,且所述骨骼模型的物理系统包括:骨骼刚体和对应的关节信息;所述运动展示方法包括:
通过所述动画系统展示所述骨骼模型的运动;
在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
在所述物理动画中,在所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的系统从所述物理系统切换回所述动画系统。
可选地,在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统包括:
在所述骨骼模型的运动过程中,对所述骨骼模型的骨骼刚体进行碰撞检测;
在检测到所述骨骼模型的骨骼刚体上发生碰撞事件的情况下,确定所述骨骼模型的骨骼刚体上触发了物理事件;
响应所述碰撞事件将展示所述骨骼模型运动的系统从所述动画系统切换为所述物理动画系统。
可选地,在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动包括:
在所述物理动画中,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态,其中,所述当前状态是所述骨骼模型在物理事件触发时的当前状态,所述目标状态是所述当前状态在所述动画系统中对应的动画帧的下一动画帧中所述骨骼模型的状态;
确定在所述物理事件中产生的所述驱动数据;
通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果;
根据所述物理模拟结果展示所述骨骼模型的运动,直至所述下一动画帧数据的加载。
可选地,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态包括:
从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据,并获取所述当前动画帧数据的下一动画帧数据作为目标动画帧数据;
将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态,并将所述目标动画帧数据转换为目标骨骼数据作为所述目标状态。
可选地,从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据包括:
获取所述动画系统在当前时间加载的动画帧,其中,所述动画帧中的对象包括具有所述骨骼模型的虚拟对象;
在所述动画帧中解析所述虚拟对象的骨骼刚体对应骨骼在世界坐标系下的姿态信息作为所述当前动画帧数据。
可选地,将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态包括:
在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据,其中,所述状态数据包括以下至少之一:骨骼刚体的位置、骨骼刚体的朝向、骨骼刚体的线速度、骨骼刚体的角速度;
在所述动画引擎中确定与所述骨骼刚体关联的关节,并获取所述关节在所述当前状态时的关节数据,其中,所述当前骨骼数据包括所述状态数据和所述关节数据。
可选地,将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态包括:
获得第一刚体所对应的骨骼在动画世界坐标系下的姿态数据,其中,所述骨骼模型至少包括第一刚体、第二刚体,以及连接在第一刚体和第二刚体之间的连接第一刚体的第一关节,以及与第二刚体连接的第二关节;
根据所述第一刚体相对骨骼的姿态计算第一刚体的物理世界坐标系下的姿态数据;
根据第一关节相对所述第一刚体的姿态计算出第一关节的姿态数据;
获得第二刚体所对应的骨骼的动画世界坐标系下的姿态数据;
根据第二刚体相对骨骼的姿态计算出第二刚体的世界坐标系下的姿态数据;
根据第二关节相对第二刚体的姿态计算出第二关节的姿态数据;
计算第二关节的相对第一关节的姿态数据。
可选地,在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据包括:
在所述动画引擎中依据第一动画帧数据解析所述骨骼模型的虚拟对象在世界坐标系中第一姿态信息;
基于所述第一姿态信息确定所述骨骼刚体的当前状态时的第一状态数据,其中,所述第一状态数据包括:骨骼刚体的位置、骨骼刚体的朝向;
在所述动画引擎中依据第二动画帧数据解析所述虚拟对象在世界坐标系中第二姿态信息,其中,所述当前动画帧数据包括所述第一动画帧数据和所述第二动画帧数据,所述第二动画帧数据的加载时间早于所述第一动画帧数据的加载时间;
基于所述第二姿态信息与所述第一姿态信息计算所述虚拟对象的移动距离,并根据所述移动距离计算所述骨骼刚体的线速度和所述骨骼刚体的角速度。
可选地,通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果包括:
将所述目标状态与所述当前状态之间的时间差划分为多个时间间隔;
通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程,得到多个物理模拟结果。
可选地,通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程包括:
在所述物理系统中基于预设参照刚体构建三轴正交坐标系统,其中,所述骨骼刚体和关节的六自由度关节分别对应所述三轴正交坐标系统三个坐标轴的轴向位移方向和旋转方向;
在所述物理系统中通过物理驱动依据所述驱动数据以所述时间间隔模拟所述骨骼刚体在所述三轴正交坐标系统沿轴向位移方向和/或旋转方向从当前状态向下一动画帧目标状态的趋近,一直到下一动画帧数据的加载,其中,物理驱动包括以下之一:线性驱动、角度驱动、球面插值驱动,所述驱动数据包括沿轴向位移和绕轴旋转位移。
可选地,通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程包括:
提取所述骨骼刚体在所述目标状态的状态数据和对应的关节数据中的关节参数和驱动数据,其中,所述关节参数和所述驱动数据相互关联;
抽象并封装所述关节参数和驱动数据,得到引擎参数;
将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中,驱动所述物理引擎以所述时间间隔模拟所述骨骼刚体从当前状态向所述目标状态的趋近,一直到下一动画帧数据的加载。
可选地,将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中包括:
计算所述引擎参数针对骨骼刚体的第一力矩,以及计算所述骨骼刚体的限制力矩;
根据所述第一力矩和所述限制力矩计算所述骨骼刚体受到的合力矩,并将所述合力矩作为驱动目标输入到所述物理系统的物理引擎中。
可选地,在通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程之后,所述方法还包括:
在所述物理系统中判断所述物理事件是否完成;
若所述物理事件未完成,将当前周期加载的下一动画帧数据更新为下一周期在起始状态时的动画帧数据。
可选地,根据所述物理模拟结果展示所述骨骼模型的运动包括:
从所述动画系统获取所述物理事件对应的动画展示;
将所述动画展示与所述物理模拟结果进行融合,得到所述骨骼模型对应的物理动画展示。
可选地,在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统包括:
在最近的一个物理事件结束后,检测所述骨骼模型上是否有物理事件发生;
在目标时间内所述骨骼模型上没有物理事件发生的情况下,确定检测到所述骨骼模型上新的触发事件;
将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
可选地,所述物理事件包括击飞事件,其中,在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动包括:
在所述骨骼模型上发生所述击飞事件的过程中,通过所述物理系统的物理引擎根据所述动画数据和所述击飞事件中产生的驱动数据控制所述骨骼模型控制所述骨骼模型进行腾空运动;
在所述骨骼模型执行所述腾空运动的过程中,通过所述物理引擎中的控制器控制所述骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值,其中,所述弹力参数用于指示所述骨骼模型的松弛程度,所述弹力参数越小表示所述骨骼模型越松弛,所述第二数值为所述骨骼模型落地时的数值;
在所述骨骼模型落地时,通过所述控制器控制所述弹力参数保持所述第二数值;
在所述骨骼模型落地目标时间后,通过所述控制器控制所述弹力参数上升至第三数值。
根据本申请实施例的另一方面,还提供了一种骨骼模型的运动展示装置,包括:
第一展示模块,用于通过所述动画系统展示所述骨骼模型的运动;
第一切换模块,用于在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为所述物理系统;
第二展示模块,用于在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
第二切换模块,用于在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
可选地,所述第一切换模块包括:
第一检测单元,用于在所述骨骼模型的运动过程中,对所述骨骼模型的骨骼刚体进行碰撞检测;
第一确定单元,用于在检测到所述骨骼模型的骨骼刚体上发生碰撞事件的情况下,确定所述骨骼模型的骨骼刚体上触发了物理事件;
第一切换单元,用于响应所述碰撞事件将展示所述骨骼模型运动的系统从所述动画系统切换为所述物理动画系统。
可选地,所述第二展示模块包括:
计算单元,用于在所述物理动画中,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态,其中,所述当前状态是所述骨骼模型在物理事件触发时的当前状态,所述目标状态是所述当前状态在所述动画系统中对应的动画帧的下一动画帧中所述骨骼模型的状态;
第二确定单元,用于确定在所述物理事件中产生的所述驱动数据;
模拟单元,用于通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果;
展示单元,用于根据所述物理模拟结果展示所述骨骼模型的运动,直至所述下一动画帧数据的加载。
可选地,所述计算单元用于:
从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据,并获取所述当前动画帧数据的下一动画帧数据作为目标动画帧数据;
将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态,并将所述目标动画帧数据转换为目标骨骼数据作为所述目标状态。
可选地,所述计算单元用于:
获取所述动画系统在当前时间加载的动画帧,其中,所述动画帧中的对象包括具有所述骨骼模型的虚拟对象;
在所述动画帧中解析所述虚拟对象的骨骼刚体对应骨骼在世界坐标系下的姿态信息作为所述当前动画帧数据。
可选地,所述计算单元用于:
在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据,其中,所述状态数据包括以下至少之一:骨骼刚体的位置、骨骼刚体的朝向、骨骼刚体的线速度、骨骼刚体的角速度;
在所述动画引擎中确定与所述骨骼刚体关联的关节,并获取所述关节在所述当前状态时的关节数据,其中,所述当前骨骼数据包括所述状态数据和所述关节数据。
可选地,所述计算单元用于:
获得第一刚体所对应的骨骼在动画世界坐标系下的姿态数据,其中,所述骨骼模型至少包括第一刚体、第二刚体,以及连接在第一刚体和第二刚体之间的连接第一刚体的第一关节,以及与第二刚体连接的第二关节;
根据所述第一刚体相对骨骼的姿态计算第一刚体的物理世界坐标系下的姿态数据;
根据第一关节相对所述第一刚体的姿态计算出第一关节的姿态数据;
获得第二刚体所对应的骨骼的动画世界坐标系下的姿态数据;
根据第二刚体相对骨骼的姿态计算出第二刚体的世界坐标系下的姿态数据;
根据第二关节相对第二刚体的姿态计算出第二关节的姿态数据;
计算第二关节的相对第一关节的姿态数据。
可选地,所述计算单元用于:
在所述动画引擎中依据第一动画帧数据解析所述骨骼模型的虚拟对象在世界坐标系中第一姿态信息;
基于所述第一姿态信息确定所述骨骼刚体的当前状态时的第一状态数据,其中,所述第一状态数据包括:骨骼刚体的位置、骨骼刚体的朝向;
在所述动画引擎中依据第二动画帧数据解析所述虚拟对象在世界坐标系中第二姿态信息,其中,所述当前动画帧数据包括所述第一动画帧数据和所述第二动画帧数据,所述第二动画帧数据的加载时间早于所述第一动画帧数据的加载时间;
基于所述第二姿态信息与所述第一姿态信息计算所述虚拟对象的移动距离,并根据所述移动距离计算所述骨骼刚体的线速度和所述骨骼刚体的角速度。
可选地,所述模拟单元用于:
将所述目标状态与所述当前状态之间的时间差划分为多个时间间隔;
通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程,得到多个物理模拟结果。
可选地,所述模拟单元用于:
在所述物理系统中基于预设参照刚体构建三轴正交坐标系统,其中,所述骨骼刚体和关节的六自由度关节分别对应所述三轴正交坐标系统三个坐标轴的轴向位移方向和旋转方向;
在所述物理系统中通过物理驱动依据所述驱动数据以所述时间间隔模拟所述骨骼刚体在所述三轴正交坐标系统沿轴向位移方向和/或旋转方向从当前状态向下一动画帧目标状态的趋近,一直到下一动画帧数据的加载,其中,物理驱动包括以下之一:线性驱动、角度驱动、球面插值驱动,所述驱动数据包括沿轴向位移和绕轴旋转位移。
可选地,所述模拟单元用于:
提取所述骨骼刚体在所述目标状态的状态数据和对应的关节数据中的关节参数和驱动数据,其中,所述关节参数和所述驱动数据相互关联;
抽象并封装所述关节参数和驱动数据,得到引擎参数;
将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中,驱动所述物理引擎以所述时间间隔模拟所述骨骼刚体从当前状态向所述目标状态的趋近,一直到下一动画帧数据的加载。
可选地,所述模拟单元用于:
计算所述引擎参数针对骨骼刚体的第一力矩,以及计算所述骨骼刚体的限制力矩;
根据所述第一力矩和所述限制力矩计算所述骨骼刚体受到的合力矩,并将所述合力矩作为驱动目标输入到所述物理系统的物理引擎中。
可选地,所述装置还包括:
判断模块,用于在通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程之后,在所述物理系统中判断所述物理事件是否完成;
更新模块,用于若所述物理事件未完成,将当前周期加载的下一动画帧数据更新为下一周期在起始状态时的动画帧数据。
作为一种可选的实施例,所述展示单元用于:
从所述动画系统获取所述物理事件对应的动画展示;
将所述动画展示与所述物理模拟结果进行融合,得到所述骨骼模型对应的物理动画展示。
可选地,所述第二切换模块包括:
第二检测单元,用于在最近的一个物理事件结束后,检测所述骨骼模型上是否有物理事件发生;
第三确定单元,用于在目标时间内所述骨骼模型上没有物理事件发生的情况下,确定检测到所述骨骼模型上新的触发事件;
第二切换单元,用于将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
作为一种可选的实施例,所述物理事件包括击飞事件,所述第二展示模块包括:
第一控制单元,用于在所述骨骼模型上发生所述击飞事件的过程中,通过所述物理系统的物理引擎根据所述动画数据和所述击飞事件中产生的驱动数据控制所述骨骼模型控制所述骨骼模型进行腾空运动;
第二控制单元,用于在所述骨骼模型执行所述腾空运动的过程中,通过所述物理引擎中的控制器控制所述骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值,其中,所述弹力参数用于指示所述骨骼模型的松弛程度,所述弹力参数越小表示所述骨骼模型越松弛,所述第二数值为所述骨骼模型落地时的数值;
第三控制单元,用于在所述骨骼模型落地时,通过所述控制器控制所述弹力参数保持所述第二数值;
第四控制单元,用于在所述骨骼模型落地目标时间后,通过所述控制器控制所述弹力参数上升至第三数值。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,采用通过动画系统展示骨骼模型的运动;在检测到骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示骨骼模型运动的系统从动画系统切换为一物理动画系统;在物理动画中,骨骼模型上的物理事件发生的过程中,通过物理系统根据动画系统提供的动画数据和物理事件中产生的驱动数据进行整合,以展示骨骼模型的运动;在检测到骨骼模型上新的触发事件,将展示骨骼模型运动的物理动画系统切换回动画系统或物理系统的方式,通过动画系统展示骨骼模型的运动,能够流畅地展现模型的动画效果,但当骨骼模型上触发了物理事件时,在将展示模型运动的系统从动画系统切换为物理系统,使得模型的运动能够更加符合物理规律,在物理事件发生的过程中,物理系统结合动画系统的动画数据和物理事件的驱动数据对骨骼系统进行运动的展示,使得模型在物理事件影响下的运动过程能够在符合物理规律的同时展现出更好的美术效果,在物理事件结束后,再将展示系统切换回动画系统,达到了根据骨骼模型当前所处的环境切换相应能够更好的展现运动效果的系统对其运动过程进行控制的目的,从而实现了提高在对骨骼模型进行运动展示的过程中展示的运动效果的技术效果,进而解决了相关技术中在对骨骼模型进行运动展示的过程中展示的运动效果较差的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的骨骼模型的运动展示方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的骨骼模型的运动展示方法的流程图;
图3是根据本申请可选的实施方式的一种骨骼模型的示意图;
图4是根据本申请可选的实施方式的一种骨骼模型状态的确定过程的示意图;
图5是根据本申请可选的实施方式的一种骨骼模型的控制过程的示意图;
图6是根据本申请实施例的一种三轴正交坐标系统下六自由度的示意图;
图7是根据本申请可选的实施方式的一种物理动画生成过程的示意图;
图8是根据本申请实施例的一种可选的骨骼模型的运动展示装置的示意图;
图9是根据本申请实施例的一种电子装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种骨骼模型的运动展示的方法实施例。
可选地,在本实施例中,上述骨骼模型的运动展示方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。本申请实施例的骨骼模型的运动展示方法可以由服务器103来执行,也可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本申请实施例的骨骼模型的运动展示方法也可以是由安装在其上的客户端来执行。
图2是根据本申请实施例的一种可选的骨骼模型的运动展示方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,通过所述动画系统展示所述骨骼模型的运动;
步骤S204,在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
步骤S206,在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
步骤S208,在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
通过上述步骤S202至步骤S208,通过动画系统展示骨骼模型的运动,能够流畅地展现模型的动画效果,但当骨骼模型上触发了物理事件时,在将展示模型运动的系统从动画系统切换为物理系统,使得模型的运动能够更加符合物理规律,在物理事件发生的过程中,物理系统结合动画系统的动画数据和物理事件的驱动数据对骨骼系统进行运动的展示,使得模型在物理事件影响下的运动过程能够在符合物理规律的同时展现出更好的美术效果,在物理事件结束后,再将展示系统切换回动画系统,达到了根据骨骼模型当前所处的环境切换相应能够更好的展现运动效果的系统对其运动过程进行控制的目的,从而实现了提高在对骨骼模型进行运动展示的过程中展示的运动效果的技术效果,进而解决了相关技术中在对骨骼模型进行运动展示的过程中展示的运动效果较差的技术问题。
可选地,在本实施例中,上述骨骼模型的运动展示方法可以但不限于应用于各种具有展示骨骼模型的功能的应用程序中。比如:游戏应用,多媒体应用,浏览器应用,即时通信应用,购物应用,金融应用等等。
在步骤S202提供的技术方案中,骨骼模型可以但不限于包括为应用中的虚拟对象构建的通过控制骨骼数据来控制虚拟对象形态的模型。上述虚拟对象可以但不限于包括虚拟角色(玩家角色、系统角色等等),虚拟道具,虚拟场景等等。
可选地,在本实施例中,骨骼模型上设置有两套系统,一套是包括骨骼、蒙皮的动画系统,一套是包括骨骼刚体、对应的关节信息的物理系统。比如:对于游戏中的一个虚拟角色,通过绘图工具制作一个角色模型,并在合适的位置给角色安装骨骼,通过游戏引擎中的骨骼控制模板可以控制这些骨骼的移动,而在角色的表层实现蒙皮效果随着骨骼的移动而发生相应的变化。骨骼可以包括刚体和关节,刚体之间通过关节连接并形成体系的结构(比如人形)。
可选地,在本实施例中,刚体(Rigid Body)是指在模型的运动过程中不可形变的刚性物体。刚体具有质量、速度、位置、朝向等若干物理属性。刚体通常由[0,n]个基本形体(Shape(外形)、Collider(碰撞体))组成。基本形体包括立方体、球形体、胶囊体、凸包等类型。一个刚体可以不包括任何基本形体,表示质点的概念。也可以包括若干基本形体,用以模塑复杂的不规则物体。关节(Joint)是指将两个刚体连接在一起形成整体的部分。关节可以限制所连接的刚体的运动范围,关节可以锁定骨骼的位移并可以通过配置适当的约束角度来限制骨骼的移动范围。
在一个可选的实施方式中,图3是根据本申请可选的实施方式的一种骨骼模型的示意图,如图3所示,左侧是骨骼模型蒙皮后的效果,中间是骨骼模型的骨架、物理刚体和关节的显示,右侧是骨骼模型的物理关节的活动约束。
可选地,在本实施例中,在骨骼模型上没有发生物理事件时,骨骼模型的运动过程的展示是通过动画系统来控制的。
在步骤S204提供的技术方案中,物理事件可以但不限于包括:骨骼模型上发生的碰撞、下落、上升、飞行、挤压、膨胀等事件或者事件的组合。
可选地,在本实施例中,如果在骨骼模型上发生了物理事件,骨骼模型的某些物理状态可能会受到物理事件的影响而改变,可以通过运动展示系统的切换来展示出这些改变带来的动画效果。
可选地,在本实施例中,动画系统和物理系统可以是并行计算的,如果没有物理事件的发生,可以通过动画系统展示模型的运动,只是当检测到物理事件时切换为由物理动画系统来控制动画系统和物理系统共同展示模型的运动。
在步骤S206提供的技术方案中,物理系统可以结合动画系统提供的动画数据和物理事件中产生的驱动数据展示骨骼模型的运动,动画系统的动画数据以及物理事件中产生的驱动数据使得物理系统能够在控制模型运动满足物理规律的同时还能够展现出较好的美术效果。
可选地,在本实施例中,上述物理动画系统能够通过物理系统模拟物理事件发生过程中的物理规律,结合物理规律和动画系统提供的动画效果来展示模型运动。
在步骤S208提供的技术方案中,如果检测到骨骼模型上发生了新的触发事件,那么可以再将展示模型运动的系统切换回动画系统,从而使得模型的运动能够展示出更好的表现效果。
可选地,在本实施例中,新的触发事件可以但不限于与包括:骨骼模型在一定时间内没有发生其他物理事件、虚拟角色的角色状态改变、场景转换等等。
作为一种可选的实施例,在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统包括:
S11,在所述骨骼模型的运动过程中,对所述骨骼模型的骨骼刚体进行碰撞检测;
S12,在检测到所述骨骼模型的骨骼刚体上发生碰撞事件的情况下,确定所述骨骼模型的骨骼刚体上触发了物理事件;
S13,响应所述碰撞事件将展示所述骨骼模型运动的系统从所述动画系统切换为所述物理动画系统。
可选地,在本实施例中,从动画系统切换到物理系统可能是通过碰撞检测触发的,也就是说在骨骼模型上检测到了碰撞时,由动画系统的纯动画的控制切换到由物理系统进行物理动画的控制。
可选地,在本实施例中,可以但不限于通过碰撞检测来确定骨骼模型上是否发生了物理事件。撞墙、击飞、被攻击等等事件都可以在碰撞检测中被检测到,如果检测到,则切换为物理动画的展示方式来体现出这些事件不同的动画效果。
作为一种可选的实施例,在所述物理动画中,在所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动包括:
S21,在所述物理动画中,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态,其中,所述当前状态是所述骨骼模型在物理事件触发时的当前状态,所述目标状态是所述当前状态在所述动画系统中对应的动画帧的下一动画帧中所述骨骼模型的状态;
S22,确定在所述物理事件中产生的所述驱动数据;
S23,通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果;
S24,根据所述物理模拟结果展示控制所述骨骼模型的运动,直至所述下一动画帧数据的加载。
可选地,在本实施例中,物理系统控制运动展示的过程可以但不限于为通过动画系统提供的动画数据确定骨骼模型的当前状态和目标状态,通过模拟模型在物理事件产生的驱动数据的作用下从当前状态向目标状态运动的过程来展示模型受物理事件的影响下的运动。
可选地,在本实施例中,骨骼模型的当前状态和目标状态可以但不限于通过骨骼模型在对应状态下的数据来表示。比如:骨骼数据,刚体和关节数据等等。
可选地,在本实施例中,物理事件中产生的驱动数据可以但不限于通过发生的物理事件对于骨骼模型施加的力矩的形式来表示,或者说可以是骨骼模型在物理事件中的受力参数。
可选地,在本实施例中,骨骼模型在物理事件中可能会发生碰撞阻挡而受力,还可能因为由外部用户施加了力(力矩)而受力。此外,骨骼模型还受到关节(Joint)的限制、关节最大力(力矩)的限制、关节各种标志(flag)的影响;以及关节连接链的迭代影响等等。物理系统会综合计算出骨骼模型的合力矩来作为驱动数据。
可选地,在本实施例中,物理系统模拟骨骼模型从当前状态向目标状态运动的过程,由于驱动数据在骨骼模型上的作用,使得骨骼模型只能趋向于目标状态,但无法达到目标状态。
作为一种可选的实施例,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态包括:
S31,从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据,并获取所述当前动画帧数据的下一动画帧数据作为目标动画帧数据;
S32,将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态,并将所述目标动画帧数据转换为目标骨骼数据作为所述目标状态。
可选地,在本实施例中,动画帧数据可以但不限于包括每个骨骼在每个时刻的位置、朝向等姿态信息。动画数据的加载、管理、查询是动画系统实现的主要功能。物理系统可以在任何时刻获得动画系统提供的某骨骼的姿态数据。
获取姿态信息的伪代码如下:
A3DBone*pBone=pSkeleton->GetBone(index);
A3DMatrix4 pose=pBone->GetAbsTM();
其中,第一行代码表示从骨骼模型中根据骨骼索引获得某个骨骼。第二行代码表示获得这个骨骼的当前世界坐标系下的姿态信息(位置,朝向)。
可选地,在本实施例中,姿态信息可以保存在一个4x4的矩阵中。也可以是以一个3维向量和一个四元数保存的,也可能是以一个3维向量和一个3x3矩阵保存的。
可选地,在本实施例中,可以但不限于通过以下方式获取动画帧数据作为当前动画帧数据:
S41,获取所述动画系统在当前时间加载的动画帧,其中,所述动画帧中的对象包括具有所述骨骼模型的虚拟对象;
S42,在所述动画帧中解析所述虚拟对象的骨骼刚体对应骨骼在世界坐标系下的姿态信息作为所述当前动画帧数据。
可选地,在本实施例中,骨骼数据可以但不限于包括骨骼刚体的状态数据和骨骼刚体对应的关节数据。例如:可以但不限于通过以下方式将动画帧数据转换为骨骼数据:根据当前动画帧数据计算骨骼模型中骨骼刚体的当前状态数据和骨骼刚体对应的当前关节数据作为当前骨骼数据,根据目标动画帧数据计算骨骼模型中骨骼刚体的目标状态数据和骨骼刚体对应的目标关节数据作为目标骨骼数据。
可选地,在本实施例中,骨骼数据可以但不限于包括骨骼刚体的位置、朝向、线速度、角速度等。
可选地,在本实施例中,将当前动画帧数据转换为当前骨骼数据的一种方式可以包括以下步骤:
S51,在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据,其中,所述状态数据包括以下至少之一:骨骼刚体的位置、骨骼刚体的朝向、骨骼刚体的线速度、骨骼刚体的角速度;
S52,在所述动画引擎中确定与所述骨骼刚体关联的关节,并获取所述关节在所述当前状态时的关节数据,其中,所述当前骨骼数据包括所述状态数据和所述关节数据。
可选地,在本实施例中,可以但不限于通过以下方式计算骨骼刚体的当前状态时的状态数据:
S61,在所述动画引擎中依据第一动画帧数据解析所述骨骼模型的虚拟对象在世界坐标系中第一姿态信息;
S62,基于所述第一姿态信息确定所述骨骼刚体的当前状态时的第一状态数据,其中,所述第一状态数据包括:骨骼刚体的位置、骨骼刚体的朝向;
S63,在所述动画引擎中依据第二动画帧数据解析所述虚拟对象在世界坐标系中第二姿态信息,其中,所述当前动画帧数据包括所述第一动画帧数据和所述第二动画帧数据,所述第二动画帧数据的加载时间早于所述第一动画帧数据的加载时间;
S64,基于所述第二姿态信息与所述第一姿态信息计算所述虚拟对象的移动距离,并根据所述移动距离计算所述骨骼刚体的线速度和所述骨骼刚体的角速度。
比如:以一个关节连接的两个刚体为例,即骨骼模型至少包括第一刚体(刚体0)、第二刚体(刚体1),以及连接在第一刚体和第二刚体之间的连接第一刚体的第一关节(关节Actor0),以及与第二刚体连接的第二关节(关节Actor1),上述将当前动画帧数据转换为当前骨骼数据的过程如下:
步骤1,获得刚体0所对应的骨骼的动画世界坐标系下的姿态数据。
步骤2,根据刚体0相对骨骼的姿态计算出刚体0的世界坐标系下的姿态数据。
步骤3,根据关节相对刚体0的姿态计算出关节Actor0的姿态。
步骤4,获得刚体1所对应的骨骼的动画世界坐标系下的姿态数据。
步骤5,根据刚体1相对骨骼的姿态计算出刚体1的世界坐标系下的姿态数据。
步骤6,根据关节相对刚体1的姿态计算出关节Actor1的姿态数据。
步骤7,计算出关节Actor1的相对关节Actor0的姿态数据。
可选地,在本实施例中,将当前动画帧数据转换为当前骨骼数据的另一种方式可以包括以下步骤:
S71,获得第一刚体所对应的骨骼在动画世界坐标系下的姿态数据,其中,所述骨骼模型至少包括第一刚体、第二刚体,以及连接在第一刚体和第二刚体之间的连接第一刚体的第一关节,以及与第二刚体连接的第二关节;
S72,根据所述第一刚体相对骨骼的姿态计算第一刚体的物理世界坐标系下的姿态数据;
S73,根据第一关节相对所述第一刚体的姿态计算出第一关节的姿态数据;
S74,获得第二刚体所对应的骨骼的动画世界坐标系下的姿态数据;
S75,根据第二刚体相对骨骼的姿态计算出第二刚体的世界坐标系下的姿态数据;
S76,根据第二关节相对第二刚体的姿态计算出第二关节的姿态数据;
S77,计算第二关节的相对第一关节的姿态数据。
在一个可选的实施方式中,图4是根据本申请可选的实施方式的一种骨骼模型状态的确定过程的示意图,如图4所示,以SLERP(球面线性插值)Drive为例,虚拟对象上有刚体Actor0和刚体Actor1(其中,Actor0是与Actor1相连的上一节刚体或关节),其中,数据均在Actor0坐标系(即基于虚拟对象的当前动画帧数据,以Actor0与Actor1的连接点作为坐标原点建立三维坐标系)下,Actor1当前表示Actor1的当前状态,Actor1目标表示Actor1的目标状态,是根据下一动画帧数据确定的。
根据上述实施例,确定虚拟对象的当前状态至少包括:刚体Actor1的当前朝向,当前位置,当前线速度,当前角度等。Joint Drive有多种不同的类型,根据不同的类型,虚拟对象的目标状态至少包括:刚体Actor1的目标位置、目标朝向、目标线速度、目标角速度等不同数据。
其中,刚体Actor1的朝向、位置可以直接由动画数据计算得出;刚体Actor1的线速度、角速度等可以参考上一帧数据间接计算出。需要注意的是,所有数据都是相对于Actor0坐标系下的数据。
在本可选的实施方式中,图5是根据本申请可选的实施方式的一种骨骼模型的控制过程的示意图,如图5所示,刚体Actor1是从当前状态Actor1当前“尽力”趋向目标状态Actor1目标的。虚拟对象的某一动画帧开始时,Actor1处于当前状态Actor1当前,设定Actor1的目标状态Actor1目标,以及设定与Actor1关联的关节(Joint)的相关参数,再经过物理模拟Actor1在受力参数的作用下从Actor1当前向Actor1目标运动的过程,获得Actor1的新状态。
可选的,新状态可能达到预设的目标状态,也可能没有达到目标状态,即新状态是Actor1从当前状态“尽力”趋向目标状态的结果。
作为一种可选的实施例,通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果包括:
S81,将所述目标状态与所述当前状态之间的时间差划分为多个时间间隔;
S82,通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程,得到多个物理模拟结果。
可选地,在本实施例中,可以但不限于通过划分的多个时间间隔(dt)的数量来控制物理系统展示模型运动过程的精度,时间间隔越多展示的运动过程约精细。
可选地,在本实施例中,可以但不限于通过以下方式模拟骨骼模型在驱动数据的作用下从上一时间间隔结束时的状态向目标状态运动的过程:
S91,在所述物理系统中基于预设参照刚体构建三轴正交坐标系统,其中,所述骨骼刚体和关节的六自由度关节分别对应所述三轴正交坐标系统三个坐标轴的轴向位移方向和旋转方向;
S92,在所述物理系统中通过物理驱动依据所述驱动数据以所述时间间隔模拟所述骨骼刚体在所述三轴正交坐标系统沿轴向位移方向和/或旋转方向从当前状态向下一动画帧目标状态的趋近,一直到下一动画帧数据的加载,其中,物理驱动包括以下之一:线性驱动、角度驱动、球面插值驱动,所述驱动数据包括沿轴向位移和绕轴旋转位移。
可选地,在本实施例中,虚拟对象的刚体和关节可以是通过六自由度关节(D6Joint、Configurable Joint)连接的。图6是根据本申请实施例的一种三轴正交坐标系统下六自由度的示意图,如图6所示,六自由度是指在三个任意指向的正交轴系中,沿轴向的3种位移运动和围绕轴向的3种旋转运动。D6 Joint可以灵活配置,实现任意约束。D6 Joint还有强大的Drive(驱动)特性。
可选地,在本实施例中,上述物理驱动的驱动类型可以但不限于包括:线性驱动LinearDrive、角度驱动AngularDrive和球面插值驱动SlerpDrive等等,每种类型又可以分为positiondrive和VelocityDrive。
可选地,在本实施例中,根据不同的物理驱动的驱动类型可以设置对应不同的驱动数据。不同驱动数据所影响的归纳总结起来就是沿轴向位移和绕轴旋转位移这6个方面。
可选地,在本实施例中,可以但不限于通过以下方式模拟骨骼模型在驱动数据的作用下从上一时间间隔结束时的状态向目标状态运动的过程:
S101,提取所述骨骼刚体在所述目标状态的状态数据和对应的关节数据中的关节参数和驱动数据,其中,所述关节参数和所述驱动数据相互关联;
S102,抽象并封装所述关节参数和驱动数据,得到引擎参数;
S103,将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中,驱动所述物理引擎以所述时间间隔模拟所述骨骼刚体从当前状态向所述目标状态的趋近,一直到下一动画帧数据的加载。
可选地,在本实施例中,上述时间间隔可以但不限于为1/60秒,动画系统的动画帧时间间隔可以但不限于为1/30秒。
可选地,在本实施例中,将引擎参数作为驱动目标输入到物理系统的物理引擎中的过程可以但不限于包括以下步骤:
S111,计算所述引擎参数针对骨骼刚体的第一力矩,以及计算所述骨骼刚体的限制力矩;
S112,根据所述第一力矩和所述限制力矩计算所述骨骼刚体受到的合力矩,并将所述合力矩作为驱动目标输入到所述物理系统的物理引擎中。
可选地,在本实施例中,驱动数据可以为刚体受到的力矩,但不限于此。比如:物理底层(即物理引擎层)会计算出上述Actor1所受的力矩并进行应用,其中,力矩计算公式如下:
Torque=spring*(tarOri-curOri)+damping*(tarAVel-curAVel):
其中,tarOri表示相对Actor0的Actor1的目标朝向;
curOri表示相对Actor0的Actor1的当前朝向;
tarAVel表示相对Actor0的Actor1的目标角速度;
curAVel表示相对Actor0的Actor1的当前角速度;
spring表示本次驱动力矩系数,越大越趋向目标,代表了朝向权重;
damping表示已经应用的驱动力矩系数,越大越趋向目标,代表了角速度权重。
可选的,可以通过调节上述spring系数和damping系数来控制刚体从当前状态运动至目标状态动画效果变化的快慢。比如:假设物理系统在某一帧确定由松散的物理动画效果切换到紧绷的物理动画效果,可以通过逐步调整spring参数来实现。比如:需要将spring参数从200调到800,但是如果突然切换(即直接将spring参数从200调整成800)往往会造成画面跳变,使人感觉生硬,导致视觉效果不好,可以将spring参数进行逐步调整,例如,在0.3秒时间内spring参数需要从200调到800,这0.3秒内跑了20多帧,则可以将每帧增大一些spring参数值,来达到最终的目标值,从而实现了参数平滑处理的操作。
可选地,在本实施例中,物理系统中可以但不限于包括控制器和合成器。合成器负责处理物理动画控制的结果与纯动画控制、纯物理控制之间的平滑处理。
在一个可选的实施方式中,通过物理系统在多个时间间隔中的每个时间间隔内模拟骨骼模型在驱动数据的作用下从上一时间间隔结束时的状态向目标状态运动的过程,得到多个物理模拟结果的过程可以但不限于包括以下步骤:
步骤1、将计算出的驱动数据(即上述受力参数)、当前状态的骨骼数据和目标状态的骨骼数据输入到物理引擎中。其中,驱动(Drive)数据用于将刚体actor“尽力”趋向目标状态。
在本实施方式中,还可以对Joint参数、Drive参数等数据进行抽象和封装,其中,Joint参数和Drive参数之间是相互关联的。通过抽象封装可以提供良好的对外接口,既方便用户使用,又能提供调教灵活性。
步骤2、物理引擎从当前状态进行dt时间片的模拟得到物理模拟结果。
步骤3、调用Simulation(仿真)模拟虚拟对象的运动。
在一个示例中,在复杂环境下,碰撞穿透是由底层物理引擎负责的,通过物理引擎事先设置好各种物理参数,然后调用物理引擎的Simulation,针对虚拟对象物理模拟运行驱动数据,然后获取物理引擎Simulation模拟后的结果,从而得到物理动画,实现了控制目标刚体或目标关节进行旋转、平移,甚至缩放等操作,形成了让骨骼摆出各种姿势的物理动画。
通过上述步骤,物理动画充分结合了动画的可控性和物理的可交互性,具有相比两者更好的动作表现效果。
作为一种可选的实施例,在通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程之后,还包括:
S121,在所述物理系统中判断所述物理事件是否完成;
S122,若所述物理事件未完成,将当前周期加载的下一动画帧数据更新为下一周期在起始状态时的动画帧数据。
可选地,在本实施例中,在模拟骨骼模型从当前状态向目标状态运动的过程之后,可以通过判断物理事件是否完成来确定后续的处理方式,如果物理事件仍未完成,则可以将当前周期加载的下一动画帧数据更新为下一周期在起始状态时的动画帧数据。
作为一种可选的实施例,根据所述物理模拟结果展示所述骨骼模型的运动包括:
S131,从所述动画系统获取所述物理事件对应的动画展示;
S132,将所述动画展示与所述物理模拟结果进行融合,得到所述骨骼模型对应的物理动画展示。
可选地,在本实施例中,为了使得展示的动画效果更好,可以在物理模拟结果中融入动画展示的效果,从而得到更加流畅的运动展示。
例如:原本虚拟角色在行走中与其它NPC或者玩家相撞后,就直接穿过去没有任何反应。加入物理动画后的流程是:在没有相撞时,虚拟角色是动画驱动状态。在系统判定相撞时,切换为物理动画状态,并对虚拟角色的躯干刚体施加一个与相撞方向相反的力。一定时间后恢复动画驱动状态。在这个过程中,施加力之后物理引擎计算出的物理动画身体弯曲程度往往比较大。因此,可以使用上述合成器将物理引擎计算出的结果与原始动画再进行融合形成最终结果。
在上述可选的实施方式中,图7是根据本申请可选的实施方式的一种物理动画生成过程的示意图,如图7所示,可以在物理引擎中设定物理参数,该物理参数的类型是可选的,通过物理引擎中的控制器控制物理Simulation对虚拟对象的运动过程进行模拟,模拟结果可以直接作为最终结果输出,也可以将模拟结果在合成器中与动画系统提供的动画效果进行融合,得到融合后的结果作为最终结果输出。
比如:以虚拟角色发生碰撞的过程为例,物理引擎中设定了处理虚拟角色的碰撞事件所使用的物理参数和驱动策略,控制器获取碰撞时产生的驱动数据以及物理引擎中碰撞事件的物理参数和驱动策略,控制器控制物理Simulation按照碰撞事件的物理参数和驱动策略以dt时间间隔对虚拟对象在碰撞时产生的驱动数据的作用下展示的运动过程进行模拟,将模拟结果和动画效果在合成器中进行合成,从而输出物理动画展示的最终结果。
作为一种可选的实施例,在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统包括:
S141,在最近的一个物理事件结束后,检测所述骨骼模型上是否有物理事件发生;
S142,在目标时间内所述骨骼模型上没有物理事件发生的情况下,确定检测到所述骨骼模型上新的触发事件;
S143,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
可选地,在本实施例中,物理事件可以但不限于是一系列发生的物理事件。可以设定目标时间来确定跳出物理动画控制的时机,比如:在目标时间内没有检测到其他物理事件的发生,则确定骨骼模型上发生的物理事件已经结束了,可以根据后续的需求将展示骨骼模型运动的系统从物理动画系统切换回动画系统,或者切换至物理系统。比如:切换回动画系统,则通过动画系统展示骨骼模型的运动,如果再次检测到骨骼模型上触发了物理事件,则再次将展示骨骼模型运动的系统从动画系统切换为物理动画系统。
作为一种可选的实施例,所述物理事件包括击飞事件,其中,在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动包括:
S151,在所述骨骼模型上发生所述击飞事件的过程中,通过所述物理系统的物理引擎根据所述动画数据和所述击飞事件中产生的驱动数据控制所述骨骼模型控制所述骨骼模型进行腾空运动;
S152,在所述骨骼模型执行所述腾空运动的过程中,通过所述物理引擎中的控制器控制所述骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值,其中,所述弹力参数用于指示所述骨骼模型的松弛程度,所述弹力参数越小表示所述骨骼模型越松弛,所述第二数值为所述骨骼模型落地时的数值;
S153,在所述骨骼模型落地时,通过所述控制器控制所述弹力参数保持所述第二数值;
S154,在所述骨骼模型落地目标时间后,通过所述控制器控制所述弹力参数上升至第三数值。
可选地,在本实施例中,上述击飞事件的过程中可以通过控制器来对事件发生过程中的驱动数据和驱动策略进行控制。
可选地,在本实施例中,控制器(控制器管理趋向相对长时间的行为,通常是数秒或以上的级别,每个动画控制器通常负责一个类型的角色行为,即和谐地安排角色各方面动画相关行为)主要负责参数平滑处理(以使角色的动画效果更加流畅)、Drive状态的管理(刚体的状态变化管理)、Drive应用策略(应用策略表示采用何种控制器控制刚体的何种动画效果,比如使用旋转控制器控制关节转动,再例如使用位置控制器控制虚拟对象的位置),从而实现多种控制器分别达到不同效果。
可选地,在本实施例中,上述弹力参数可以但不限于包括:spring参数。弹力参数用于指示骨骼模型的松弛程度,弹力参数越小表示骨骼模型越松弛。
在一个示例中,以展示击飞效果为例,在击飞前,人物是活着状态是纯动画控制,物理以kinematic(运动学上的)刚体的形式受动画控制。在击飞时刻切换为物理动画,在整个腾空的过程中身体是逐渐放松的,即控制器控制骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值;人物落地时认为是死亡状态,保持较松散的效果,即控制器控制弹力参数保持第二数值;落地一段时间后(也就是死亡一段时间后)身体形成较紧绷僵硬的状态,认为是僵尸,即控制器控制弹力参数上升至第三数值。在击飞的过程中,物理动画的Drive状态和应用策略是不同的,可以通过控制器控制管理实施,控制器根据击飞时刻的受力参数,确定虚拟对象的驱动数据,进而为目标刚体和/或目标关节赋予物理属性。
本申请还提供了一种可选实施例,该可选实施例提供了一种游戏中的虚拟人物的运动展示过程,以物理事件为游戏中的击飞事件为例,骨骼模型为游戏中的虚拟人物,在击飞事件发生前,虚拟人物是活着的状态,运动的展示由动画系统控制,物理系统以kinematic(运动学上的)刚体的形式受动画系统控制。在击飞时刻切换为物理系统控制运动展示,在虚拟人物的击飞后腾空的过程中物理系统控制虚拟人物的身体是逐渐放松的。虚拟人物落地时认为是死亡状态,物理系统控制其保持较松散的效果。落地一段时间后(也就是死亡一段时间后),物理系统控制身体形成较紧绷僵硬的状态,认为是僵尸。可能再过一段时间后,再切换为动画系统控制僵尸的展示。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台电子设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述骨骼模型的运动展示方法的骨骼模型的运动展示装置,骨骼模型上设置有动画系统和物理系统,且所述骨骼模型的物理系统包括:骨骼刚体和对应的关节信息。图8是根据本申请实施例的一种可选的骨骼模型的运动展示装置的示意图,如图8所示,该装置可以包括:
第一展示模块82,用于通过所述动画系统展示所述骨骼模型的运动;
第一切换模块84,用于在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
第二展示模块86,用于在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
第二切换模块88,用于在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
需要说明的是,该实施例中的第一展示模块82可以用于执行本申请实施例中的步骤S202,该实施例中的第一切换模块84可以用于执行本申请实施例中的步骤S204,该实施例中的第二展示模块86可以用于执行本申请实施例中的步骤S206,该实施例中的第二切换模块88可以用于执行本申请实施例中的步骤S208。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,通过动画系统展示骨骼模型的运动,能够流畅地展现模型的动画效果,但当骨骼模型上触发了物理事件时,在将展示模型运动的系统从动画系统切换为物理系统,使得模型的运动能够更加符合物理规律,在物理事件发生的过程中,物理系统结合动画系统的动画数据和物理事件的驱动数据对骨骼系统进行运动的展示,使得模型在物理事件影响下的运动过程能够在符合物理规律的同时展现出更好的美术效果,在物理事件结束后,再将展示系统切换回动画系统,达到了根据骨骼模型当前所处的环境切换相应能够更好的展现运动效果的系统对其运动过程进行控制的目的,从而实现了提高在对骨骼模型进行运动展示的过程中展示的运动效果的技术效果,进而解决了相关技术中在对骨骼模型进行运动展示的过程中展示的运动效果较差的技术问题。
作为一种可选的实施例,所述第一切换模块包括:
第一检测单元,用于在所述骨骼模型的运动过程中,对所述骨骼模型的骨骼刚体进行碰撞检测;
第一确定单元,用于在检测到所述骨骼模型的骨骼刚体上发生碰撞事件的情况下,确定所述骨骼模型的骨骼刚体上触发了物理事件;
第一切换单元,用于响应所述碰撞事件将展示所述骨骼模型运动的系统从所述动画系统切换为所述物理动画系统。
作为一种可选的实施例,所述第二展示模块包括:
计算单元,用于在所述物理动画中,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态,其中,所述当前状态是所述骨骼模型在物理事件触发时的当前状态,所述目标状态是所述当前状态在所述动画系统中对应的动画帧的下一动画帧中所述骨骼模型的状态;
第二确定单元,用于确定在所述物理事件中产生的所述驱动数据;
模拟单元,用于通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果;
展示单元,用于根据所述物理模拟结果展示所述骨骼模型的运动,直至所述下一动画帧数据的加载。
作为一种可选的实施例,所述计算单元用于:
从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据,并获取所述当前动画帧数据的下一动画帧数据作为目标动画帧数据;
将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态,并将所述目标动画帧数据转换为目标骨骼数据作为所述目标状态。
作为一种可选的实施例,所述计算单元用于:
获取所述动画系统在当前时间加载的动画帧,其中,所述动画帧中的对象包括具有所述骨骼模型的虚拟对象;
在所述动画帧中解析所述虚拟对象的骨骼刚体对应骨骼在世界坐标系下的姿态信息作为所述当前动画帧数据。
作为一种可选的实施例,所述计算单元用于:
在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据,其中,所述状态数据包括以下至少之一:骨骼刚体的位置、骨骼刚体的朝向、骨骼刚体的线速度、骨骼刚体的角速度;
在所述动画引擎中确定与所述骨骼刚体关联的关节,并获取所述关节在所述当前状态时的关节数据,其中,所述当前骨骼数据包括所述状态数据和所述关节数据。
作为一种可选的实施例,所述计算单元用于:
获得第一刚体所对应的骨骼在动画世界坐标系下的姿态数据,其中,所述骨骼模型至少包括第一刚体、第二刚体,以及连接在第一刚体和第二刚体之间的连接第一刚体的第一关节,以及与第二刚体连接的第二关节;
根据所述第一刚体相对骨骼的姿态计算第一刚体的物理世界坐标系下的姿态数据;
根据第一关节相对所述第一刚体的姿态计算出第一关节的姿态数据;
获得第二刚体所对应的骨骼的动画世界坐标系下的姿态数据;
根据第二刚体相对骨骼的姿态计算出第二刚体的世界坐标系下的姿态数据;
根据第二关节相对第二刚体的姿态计算出第二关节的姿态数据;
计算第二关节的相对第一关节的姿态数据。
作为一种可选的实施例,所述计算单元用于:
在所述动画引擎中依据第一动画帧数据解析所述骨骼模型的虚拟对象在世界坐标系中第一姿态信息;
基于所述第一姿态信息确定所述骨骼刚体的当前状态时的第一状态数据,其中,所述第一状态数据包括:骨骼刚体的位置、骨骼刚体的朝向;
在所述动画引擎中依据第二动画帧数据解析所述虚拟对象在世界坐标系中第二姿态信息,其中,所述当前动画帧数据包括所述第一动画帧数据和所述第二动画帧数据,所述第二动画帧数据的加载时间早于所述第一动画帧数据的加载时间;
基于所述第二姿态信息与所述第一姿态信息计算所述虚拟对象的移动距离,并根据所述移动距离计算所述骨骼刚体的线速度和所述骨骼刚体的角速度。
作为一种可选的实施例,所述模拟单元用于:
将所述目标状态与所述当前状态之间的时间差划分为多个时间间隔;
通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程,得到多个物理模拟结果。
作为一种可选的实施例,所述模拟单元用于:
在所述物理系统中基于预设参照刚体构建三轴正交坐标系统,其中,所述骨骼刚体和关节的六自由度关节分别对应所述三轴正交坐标系统三个坐标轴的轴向位移方向和旋转方向;
在所述物理系统中通过物理驱动依据所述驱动数据以所述时间间隔模拟所述骨骼刚体在所述三轴正交坐标系统沿轴向位移方向和/或旋转方向从当前状态向下一动画帧目标状态的趋近,一直到下一动画帧数据的加载,其中,物理驱动包括以下之一:线性驱动、角度驱动、球面插值驱动,所述驱动数据包括沿轴向位移和绕轴旋转位移。
作为一种可选的实施例,所述模拟单元用于:
提取所述骨骼刚体在所述目标状态的状态数据和对应的关节数据中的关节参数和驱动数据,其中,所述关节参数和所述驱动数据相互关联;
抽象并封装所述关节参数和驱动数据,得到引擎参数;
将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中,驱动所述物理引擎以所述时间间隔模拟所述骨骼刚体从当前状态向所述目标状态的趋近,一直到下一动画帧数据的加载。
作为一种可选的实施例,所述模拟单元用于:
计算所述引擎参数针对骨骼刚体的第一力矩,以及计算所述骨骼刚体的限制力矩;
根据所述第一力矩和所述限制力矩计算所述骨骼刚体受到的合力矩,并将所述合力矩作为驱动目标输入到所述物理系统的物理引擎中。
作为一种可选的实施例,所述装置还包括:
判断模块,用于在通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程之后,在所述物理系统中判断所述物理事件是否完成;
更新模块,用于若所述物理事件未完成,将当前周期加载的下一动画帧数据更新为下一周期在起始状态时的动画帧数据。
作为一种可选的实施例,所述展示单元用于:
从所述动画系统获取所述物理事件对应的动画展示;
将所述动画展示与所述物理模拟结果进行融合,得到所述骨骼模型对应的物理动画展示。
作为一种可选的实施例,所述第二切换模块包括:
第二检测单元,用于在最近的一个物理事件结束后,检测所述骨骼模型上是否有物理事件发生;
第三确定单元,用于在目标时间内所述骨骼模型上没有物理事件发生的情况下,确定检测到所述骨骼模型上新的触发事件;
第二切换单元,用于将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
作为一种可选的实施例,所述物理事件包括击飞事件,所述第二展示模块包括:
第一控制单元,用于在所述骨骼模型上发生所述击飞事件的过程中,通过所述物理系统的物理引擎根据所述动画数据和所述击飞事件中产生的驱动数据控制所述骨骼模型控制所述骨骼模型进行腾空运动;
第二控制单元,用于在所述骨骼模型执行所述腾空运动的过程中,通过所述物理引擎中的控制器控制所述骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值,其中,所述弹力参数用于指示所述骨骼模型的松弛程度,所述弹力参数越小表示所述骨骼模型越松弛,所述第二数值为所述骨骼模型落地时的数值;
第三控制单元,用于在所述骨骼模型落地时,通过所述控制器控制所述弹力参数保持所述第二数值;
第四控制单元,用于在所述骨骼模型落地目标时间后,通过所述控制器控制所述弹力参数上升至第三数值。
根据本申请实施例的另一个方面,还提供了一种用于实施上述骨骼模型的运动展示方法电子装置。
图9是根据本申请实施例的一种电子装置的结构框图,如图9所示,该电子装置可以包括:一个或多个(图中仅示出一个)处理器901、存储器903、以及传输装置905,如图9所示,该电子装置还可以包括输入输出设备907。
其中,存储器903可用于存储软件程序以及模块,如本申请实施例中的骨骼模型的运动展示方法和装置对应的程序指令/模块,处理器901通过运行存储在存储器903内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的骨骼模型的运动展示方法。存储器903可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器903可进一步包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至电子装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置905用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置905包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置905为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器903用于存储应用程序。
处理器901可以通过传输装置905调用存储器903存储的应用程序,以执行下述步骤:
通过所述动画系统展示所述骨骼模型的运动;
在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
采用本申请实施例,提供了一种骨骼模型的运动展示的方案。通过动画系统展示骨骼模型的运动,能够流畅地展现模型的动画效果,但当骨骼模型上触发了物理事件时,在将展示模型运动的系统从动画系统切换为物理系统,使得模型的运动能够更加符合物理规律,在物理事件发生的过程中,物理系统结合动画系统的动画数据和物理事件的驱动数据对骨骼系统进行运动的展示,使得模型在物理事件影响下的运动过程能够在符合物理规律的同时展现出更好的美术效果,在物理事件结束后,再将展示系统切换回动画系统,达到了根据骨骼模型当前所处的环境切换相应能够更好的展现运动效果的系统对其运动过程进行控制的目的,从而实现了提高在对骨骼模型进行运动展示的过程中展示的运动效果的技术效果,进而解决了相关技术中在对骨骼模型进行运动展示的过程中展示的运动效果较差的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图9所示的结构仅为示意,电子装置可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等电子设备。图9其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令电子设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行骨骼模型的运动展示方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
通过所述动画系统展示所述骨骼模型的运动;
在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
在检测到所述骨骼模型上新的触发事件结束的情况下,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (18)

1.一种骨骼模型的运动展示方法,其特征在于,骨骼模型上设置有动画系统和物理系统,且所述骨骼模型的物理系统包括:骨骼刚体和对应的关节信息;所述运动展示方法包括:
通过所述动画系统展示所述骨骼模型的运动;
在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统;
所述物理事件包括击飞事件,其中,在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动包括:在所述骨骼模型上发生所述击飞事件的过程中,通过所述物理系统的物理引擎根据所述动画数据和所述击飞事件中产生的驱动数据控制所述骨骼模型控制所述骨骼模型进行腾空运动;在所述骨骼模型执行所述腾空运动的过程中,通过所述物理引擎中的控制器控制所述骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值,其中,所述弹力参数用于指示所述骨骼模型的松弛程度,所述弹力参数越小表示所述骨骼模型越松弛,所述第二数值为所述骨骼模型落地时的数值;在所述骨骼模型落地时,通过所述控制器控制所述弹力参数保持所述第二数值;在所述骨骼模型落地目标时间后,通过所述控制器控制所述弹力参数上升至第三数值。
2.根据权利要求1所述的方法,其特征在于,在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统包括:
在所述骨骼模型的运动过程中,对所述骨骼模型的骨骼刚体进行碰撞检测;
在检测到所述骨骼模型的骨骼刚体上发生碰撞事件的情况下,确定所述骨骼模型的骨骼刚体上触发了物理事件;
响应所述碰撞事件将展示所述骨骼模型运动的系统从所述动画系统切换为所述物理动画系统。
3.根据权利要求1所述的方法,其特征在于,在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动包括:
在所述物理动画中,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态,其中,所述当前状态是所述骨骼模型在物理事件触发时的当前状态,所述目标状态是所述当前状态在所述动画系统中对应的动画帧的下一动画帧中所述骨骼模型的状态;
确定在所述物理事件中产生的所述驱动数据;
通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果;
根据所述物理模拟结果展示所述骨骼模型的运动,直至所述下一动画帧数据的加载。
4.根据权利要求3所述的方法,其特征在于,根据所述动画系统提供的动画数据计算所述骨骼模型的当前状态和目标状态包括:
从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据,并获取所述当前动画帧数据的下一动画帧数据作为目标动画帧数据;
将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态,并将所述目标动画帧数据转换为目标骨骼数据作为所述目标状态。
5.根据权利要求4所述的方法,其特征在于,从所述动画系统获取骨骼模型上的物理事件发生时的动画帧数据作为当前动画帧数据包括:
获取所述动画系统在当前时间加载的动画帧,其中,所述动画帧中的对象包括具有所述骨骼模型的虚拟对象;
在所述动画帧中解析所述虚拟对象的骨骼刚体对应骨骼在世界坐标系下的姿态信息作为所述当前动画帧数据。
6.根据权利要求4所述的方法,其特征在于,将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态包括:
在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据,其中,所述状态数据包括以下至少之一:骨骼刚体的位置、骨骼刚体的朝向、骨骼刚体的线速度、骨骼刚体的角速度;
在所述动画引擎中确定与所述骨骼刚体关联的关节,并获取所述关节在所述当前状态时的关节数据,其中,所述当前骨骼数据包括所述状态数据和所述关节数据。
7.根据权利要求4所述的方法,其特征在于,将所述当前动画帧数据转换为当前骨骼数据作为所述当前状态包括:
获得第一刚体所对应的骨骼在动画世界坐标系下的姿态数据,其中,所述骨骼模型至少包括第一刚体、第二刚体,以及连接在第一刚体和第二刚体之间的连接第一刚体的第一关节,以及与第二刚体连接的第二关节;
根据所述第一刚体相对骨骼的姿态计算第一刚体的物理世界坐标系下的姿态数据;
根据第一关节相对所述第一刚体的姿态计算出第一关节的姿态数据;
获得第二刚体所对应的骨骼的动画世界坐标系下的姿态数据;
根据第二刚体相对骨骼的姿态计算出第二刚体的世界坐标系下的姿态数据;
根据第二关节相对第二刚体的姿态计算出第二关节的姿态数据;
计算第二关节的相对第一关节的姿态数据。
8.根据权利要求6所述的方法,其特征在于,在动画引擎中依据所述当前动画帧数据计算所述骨骼刚体的当前状态时的状态数据包括:
在所述动画引擎中依据第一动画帧数据解析所述骨骼模型的虚拟对象在世界坐标系中第一姿态信息;
基于所述第一姿态信息确定所述骨骼刚体的当前状态时的第一状态数据,其中,所述第一状态数据包括:骨骼刚体的位置、骨骼刚体的朝向;
在所述动画引擎中依据第二动画帧数据解析所述虚拟对象在世界坐标系中第二姿态信息,其中,所述当前动画帧数据包括所述第一动画帧数据和所述第二动画帧数据,所述第二动画帧数据的加载时间早于所述第一动画帧数据的加载时间;
基于所述第二姿态信息与所述第一姿态信息计算所述虚拟对象的移动距离,并根据所述移动距离计算所述骨骼刚体的线速度和所述骨骼刚体的角速度。
9.根据权利要求3所述的方法,其特征在于,通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程,得到物理模拟结果包括:
将所述目标状态与所述当前状态之间的时间差划分为多个时间间隔;
通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程,得到多个物理模拟结果。
10.根据权利要求9所述的方法,其特征在于,通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程包括:
在所述物理系统中基于预设参照刚体构建三轴正交坐标系统,其中,所述骨骼刚体和关节的六自由度关节分别对应所述三轴正交坐标系统三个坐标轴的轴向位移方向和旋转方向;
在所述物理系统中通过物理驱动依据所述驱动数据以所述时间间隔模拟所述骨骼刚体在所述三轴正交坐标系统沿轴向位移方向和/或旋转方向从当前状态向下一动画帧目标状态的趋近,一直到下一动画帧数据的加载,其中,物理驱动包括以下之一:线性驱动、角度驱动、球面插值驱动,所述驱动数据包括沿轴向位移和绕轴旋转位移。
11.根据权利要求9所述的方法,其特征在于,通过所述物理系统在所述多个时间间隔中的每个时间间隔内模拟所述骨骼模型在所述驱动数据的作用下从上一时间间隔结束时的状态向所述目标状态运动的过程包括:
提取所述骨骼刚体在所述目标状态的状态数据和对应的关节数据中的关节参数和驱动数据,其中,所述关节参数和所述驱动数据相互关联;
抽象并封装所述关节参数和驱动数据,得到引擎参数;
将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中,驱动所述物理引擎以所述时间间隔模拟所述骨骼刚体从当前状态向所述目标状态的趋近,一直到下一动画帧数据的加载。
12.根据权利要求11所述的方法,其特征在于,将所述引擎参数作为驱动目标输入到所述物理系统的物理引擎中包括:
计算所述引擎参数针对骨骼刚体的第一力矩,以及计算所述骨骼刚体的限制力矩;
根据所述第一力矩和所述限制力矩计算所述骨骼刚体受到的合力矩,并将所述合力矩作为驱动目标输入到所述物理系统的物理引擎中。
13.根据权利要求3所述的方法,其特征在于,在通过所述物理系统模拟所述骨骼模型在所述驱动数据的作用下从所述当前状态向所述目标状态运动的过程之后,所述方法还包括:
在所述物理系统中判断所述物理事件是否完成;
若所述物理事件未完成,将当前周期加载的下一动画帧数据更新为下一周期在起始状态时的动画帧数据。
14.根据权利要求3所述的方法,其特征在于,根据所述物理模拟结果展示所述骨骼模型的运动包括:
从所述动画系统获取所述物理事件对应的动画展示;
将所述动画展示与所述物理模拟结果进行融合,得到所述骨骼模型对应的物理动画展示。
15.根据权利要求1所述的方法,其特征在于,在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统包括:
在最近的一个物理事件结束后,检测所述骨骼模型上是否有物理事件发生;
在目标时间内所述骨骼模型上没有物理事件发生的情况下,确定检测到所述骨骼模型上新的触发事件;
将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统。
16.一种骨骼模型的运动展示装置,其特征在于,骨骼模型上设置有动画系统和物理系统,且所述骨骼模型的物理系统包括:骨骼刚体和对应的关节信息;所述运动展示装置包括:
第一展示模块,用于通过所述动画系统展示所述骨骼模型的运动;
第一切换模块,用于在检测到所述骨骼模型的骨骼刚体上触发了物理事件的情况下,将展示所述骨骼模型运动的系统从所述动画系统切换为一物理动画系统;
第二展示模块,用于在所述物理动画中,所述骨骼模型上的物理事件发生的过程中,通过所述物理系统根据所述动画系统提供的动画数据和所述物理事件中产生的驱动数据进行整合,以展示所述骨骼模型的运动;
第二切换模块,用于在检测到所述骨骼模型上新的触发事件,将展示所述骨骼模型运动的物理动画系统切换回所述动画系统或所述物理系统;
所述物理事件包括击飞事件,所述第二展示模块还用于:在所述骨骼模型上发生所述击飞事件的过程中,通过所述物理系统的物理引擎根据所述动画数据和所述击飞事件中产生的驱动数据控制所述骨骼模型控制所述骨骼模型进行腾空运动;在所述骨骼模型执行所述腾空运动的过程中,通过所述物理引擎中的控制器控制所述骨骼模型的弹力参数以目标速度从第一数值逐渐减小至第二数值,其中,所述弹力参数用于指示所述骨骼模型的松弛程度,所述弹力参数越小表示所述骨骼模型越松弛,所述第二数值为所述骨骼模型落地时的数值;在所述骨骼模型落地时,通过所述控制器控制所述弹力参数保持所述第二数值;在所述骨骼模型落地目标时间后,通过所述控制器控制所述弹力参数上升至第三数值。
17.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至15任一项中所述的方法。
18.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至15任一项中所述的方法。
CN202010740371.9A 2020-07-28 2020-07-28 一种骨骼模型的运动展示方法和装置 Active CN111968204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010740371.9A CN111968204B (zh) 2020-07-28 2020-07-28 一种骨骼模型的运动展示方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010740371.9A CN111968204B (zh) 2020-07-28 2020-07-28 一种骨骼模型的运动展示方法和装置

Publications (2)

Publication Number Publication Date
CN111968204A CN111968204A (zh) 2020-11-20
CN111968204B true CN111968204B (zh) 2024-03-22

Family

ID=73363928

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010740371.9A Active CN111968204B (zh) 2020-07-28 2020-07-28 一种骨骼模型的运动展示方法和装置

Country Status (1)

Country Link
CN (1) CN111968204B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112891954B (zh) * 2021-02-02 2024-02-13 网易(杭州)网络有限公司 虚拟对象的模拟方法、装置、存储介质及计算机设备
CN115222854A (zh) * 2021-04-15 2022-10-21 北京字跳网络技术有限公司 虚拟形象的碰撞处理方法、装置、电子设备和存储介质
CN114998491B (zh) * 2022-08-01 2022-11-18 阿里巴巴(中国)有限公司 数字人驱动方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105894555A (zh) * 2016-03-30 2016-08-24 腾讯科技(深圳)有限公司 一种动画模型的肢体动作模拟方法和装置
CN107067451A (zh) * 2017-04-07 2017-08-18 广州爱九游信息技术有限公司 动画中动态骨骼的实现方法和装置
CN110634175A (zh) * 2013-08-02 2019-12-31 索美智能有限公司 神经行为动画系统
CN110930483A (zh) * 2019-11-20 2020-03-27 腾讯科技(深圳)有限公司 一种角色控制的方法、模型训练的方法以及相关装置
CN111260764A (zh) * 2020-02-04 2020-06-09 腾讯科技(深圳)有限公司 一种制作动画的方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789754B2 (en) * 2018-07-27 2020-09-29 Adobe Inc. Generating target-character-animation sequences based on style-aware puppets patterned after source-character-animation sequences

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110634175A (zh) * 2013-08-02 2019-12-31 索美智能有限公司 神经行为动画系统
CN105894555A (zh) * 2016-03-30 2016-08-24 腾讯科技(深圳)有限公司 一种动画模型的肢体动作模拟方法和装置
CN107067451A (zh) * 2017-04-07 2017-08-18 广州爱九游信息技术有限公司 动画中动态骨骼的实现方法和装置
CN110930483A (zh) * 2019-11-20 2020-03-27 腾讯科技(深圳)有限公司 一种角色控制的方法、模型训练的方法以及相关装置
CN111260764A (zh) * 2020-02-04 2020-06-09 腾讯科技(深圳)有限公司 一种制作动画的方法、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
deformable muscle models for motion simulation;Josef kohout;2014 International Conference on Computer Graphics Theory and Applications(GRAPP);全文 *
利用OSG三维图形渲染引擎实现的骨骼动画;段辉丽;唐丽玉;;计算机工程与应用(03);全文 *

Also Published As

Publication number Publication date
CN111968204A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
CN112001989B (zh) 虚拟对象的控制方法及装置、存储介质、电子装置
CN111968204B (zh) 一种骨骼模型的运动展示方法和装置
US11113860B2 (en) Particle-based inverse kinematic rendering system
CN113785330B (zh) 使用相异的目标动画数据来训练人物的强化学习
CN110930483B (zh) 一种角色控制的方法、模型训练的方法以及相关装置
Bideau et al. Real handball goalkeeper vs. virtual handball thrower
JP5639646B2 (ja) スケルトン・データーのゲーム・アバターへのリアル・タイム・リターゲティング
CN101916324B (zh) 用于动画的依赖图评估的系统和方法
CN111260762A (zh) 一种动画实现方法、装置、电子设备和存储介质
CN111714880B (zh) 画面的显示方法和装置、存储介质、电子装置
US10062197B2 (en) Animating a virtual object in a virtual world
US11409276B2 (en) Method and system for controlling robots within in an interactive arena and generating a virtual overlayed
WO2023088041A1 (zh) 虚拟角色的行走动画生成方法、装置、设备及存储介质
CN111028317B (zh) 虚拟对象的动画生成方法、装置、设备及存储介质
Al Borno et al. Robust Physics‐based Motion Retargeting with Realistic Body Shapes
US11816772B2 (en) System for customizing in-game character animations by players
US20220134218A1 (en) System and method for virtual character animation using motion capture
US20180144531A1 (en) Animating a virtual object in a virtual world
Ho et al. A finite state machine based on topology coordinates for wrestling games
US9652879B2 (en) Animation of a virtual object
Alvarado et al. Generating Upper‐Body Motion for Real‐Time Characters Making their Way through Dynamic Environments
Li et al. Soft articulated characters in projective dynamics
Lee et al. Towards safe, realistic testbed for robotic systems with human interaction
CN107050848B (zh) 基于体域网的体感游戏实现方法以及装置
JP2012247953A (ja) プログラム、情報記憶媒体、情報処理システム及び情報処理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant