三维虚拟对象摆动方法、装置、存储介质和计算机设备与流程

文档序号:16214459发布日期:2018-12-08 08:10阅读:147来源:国知局
三维虚拟对象摆动方法、装置、存储介质和计算机设备与流程

本发明涉及计算机数据处理领域,特别是涉及一种三维虚拟对象摆动方法、装置、存储介质和计算机设备。

背景技术

随着计算机技术和图像处理技术的发展,3d绘图技术越来越多的被应用于计算机绘图中,可绘制出生动形象的三维物体,如人物发型、服饰等。

目前绘制人物发型或服饰时多采用动画系统的形式将发型或服饰的摆动幅度预先固定,产生的运动效果与自然规律下的运动效果存在差异,降低了三维物体运动的精确性和真实性。



技术实现要素:

基于此,有必要针对上述问题,提供一种三维虚拟对象摆动方法、装置、存储介质和计算机设备,能够产提高三维虚拟对象运动的精确性和真实性。

一种三维虚拟对象摆动方法,包括:

检测三维主体的物理运动,获取所述三维主体对应的主体骨骼模型在所述物理运动时对应的第一物理运动信息;

获取与所述主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型;

根据所述第一物理运动信息和摆动驱动关系确定所述三维虚拟对象骨骼模型对应的第二物理运动信息;

所述三维虚拟对象骨骼模型根据所述第二物理运动信息发生对应的物理运动,以使所述三维虚拟对象骨骼模型对应的三维虚拟对象跟随所述三维主体摆动。

一种三维虚拟对象摆动装置,包括:

第一获取模块,用于检测三维主体的物理运动,获取所述三维主体对应的主体骨骼模型在所述物理运动时对应的第一物理运动信息;

第二获取模块,用于获取与所述主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型;

驱动信息获取模块,用于根据所述第一物理运动信息和摆动驱动关系确定所述三维虚拟对象骨骼模型对应的第二物理运动信息;

驱动模块,用于所述三维虚拟对象骨骼模型根据所述第二物理运动信息发生对应的物理运动,以使所述三维虚拟对象骨骼模型对应的三维虚拟对象跟随所述三维主体摆动。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行指令,所述计算机可执行指令被处理器执行时,使得处理器执行以下步骤:检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息;获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型;根据第一物理运动信息和摆动驱动关系确定三维虚拟对象骨骼模型对应的第二物理运动信息;三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中储存有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行以下步骤:检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息;获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型;根据第一物理运动信息和摆动驱动关系确定三维虚拟对象骨骼模型对应的第二物理运动信息;三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

上述三维虚拟对象摆动方法、装置、存储介质和计算机设备,通过检测三维主体的物理运动获取三维主体对应的主体骨骼模型对应的第一物理运动信息,并根据第一物理运动信息确定与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型对应的第二物理运动信息,从而使三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象跟随三维主体摆动。通过预先建立三维主体骨骼模型和三维虚拟对象骨骼模型,以及两者之间的驱动摆动关系,利用建模的方式构建骨骼模型更加精确的控制三维虚拟对象的摆动,并且通过建立三维主体骨骼模型与三维虚拟对象骨骼模型的驱动摆动关系,使三维虚拟对象根据三维主体的实时摆动情况摆动,摆动状态更加接近真实场景,从而提高了三维虚拟对象摆动的精确度和真实性。

附图说明

图1为一个实施例中计算机设备的内部结构图;

图2为一个实施例中三维虚拟对象摆动方法的流程图;

图3为另一个实施例中三维虚拟对象摆动方法的流程图;

图4为一个实施例中三维虚拟对象物理运动信息获取方法的流程图;

图5为一个实施例中三维虚拟对象摆动方法的流程图;

图6为一个具体实施例中三维虚拟对象摆动方法的流程图;

图6a为一个实施例中一种发型的骨骼模型示意图;

图6b为一个实施例中建立多种发型的骨骼模型的中间结果示意图;

图7为一个实施例中其中一种发型产生物理运动的效果图;

图8为一个实施例中三维虚拟对象摆动装置的结构框图;

图9为另一个实施例中三维虚拟对象摆动装置的结构框图;

图10为一个实施例中三维虚拟对象模型建立模块的结构框图;

图11为一个实施例中三维虚拟对象摆动装置的结构框图;

图12为另一个实施例中三维虚拟对象摆动装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一个实施中的计算机设备的内部结构示意图。如图1所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和三维虚拟对象摆动装置,数据库中存储有预先建立的三维主体骨骼模型数据、三维虚拟对象骨骼模型数据以及两者摆动驱动关系对应的数据,该三维虚拟对象摆动装置用于实现适用于计算机设备的一种三维虚拟对象摆动方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个服务器的运行。该计算机设备的内存储器为非易失性存储介质中的三维虚拟对象摆动装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种三维虚拟对象摆动方法。该计算机设备的网络接口用于与外部设备通过网络连接通信,比如接收外部设备三维主体对应的物理运动指令以及向外部设备返回三维主体和三维虚拟对象的物理运动数据等。计算机设备可以用独立的服务器或者是多个服务器组成的服务器集群来实现。计算机设备也可以是终端,该终端可以是手机、平板电脑或者个人数字助理或穿戴式设备等。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

如图2所示,在一个实施例中,提供一种三维虚拟对象摆动方法,包括以下内容:

步骤s201,检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息。

其中,三维主体是指主动进行运动的三维物体模型,如三维游戏类中的人物身体模型。第一物理运动信息是指主体骨骼模型发生物理运动时产生的相关信息,包括运动速度信息、运动幅度信息、运动惯性信息、运动轨迹信息等。

预先根据三维主体建立对应的主体骨骼模型,具体地,根据三维主体的组成结构和需要进行的物理运动的方式建立对应的主体骨骼模型,例如,三维游戏中的人物身体模型包括躯干、手臂、腿、手、脚等部分构成,并根据各部分需要进行的运动设置不同的骨骼,如手设置手指对应的骨骼,手肘部位设置节点,各个部分共同构成人物身体模型对应的骨骼模型。其他动物模型可以根据动物本身的构成部分和需要进行的物理运动设置建立对应的骨骼模型。进一步地,建立三维主体对应的主体骨骼模型后,把三维主体绑定到主体骨骼模型上。

进一步地,将三维主体绑定到对应的主体骨骼模型上后,三维主体和主体骨骼模型能够同步进行物理运动。因此,当检测到三维主体运动时,获取此时三维主体对应的主体骨骼模型对应的第一物理运动信息。

步骤s202,获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型。

其中,三维虚拟对象骨骼模型是指三维虚拟对象对应的骨骼模型,三维虚拟对象是指在三维主体的驱动力作用下发生运动的对象,例如三维游戏类中人物的头发或裙摆等,跟随人物身体模型的运动而摆动。摆动驱动关系是指一个对象能够带动另外一个对象运动的关系。

具体地,为了使三维虚拟对象能够跟随主体骨骼模型摆动,预先将三维虚拟对象骨骼模型与主体骨骼模型建立摆动驱动关系。当检测到三维主体发生物理运动时,获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型。

步骤s203,根据第一物理运动信息和摆动驱动关系确定三维虚拟对象骨骼模型对应的第二物理运动信息。

其中,第二物理信息是指三维虚拟对象骨骼模型发生物理运动时产生的相关信息,包括运动速度信息、运动幅度信息、运动惯性信息、运动轨迹信息、驱动力信息、骨骼之间的相互作用力信息等。

具体地,主体骨骼模型与三维虚拟对象骨骼模型建立摆动驱动关系,即将主体骨骼模型的骨骼节点与三维虚拟对象骨骼模型的骨骼节点建立绑定关系,当两者建立绑定关系的节点不同时,主体骨骼模型对三维虚拟对象骨骼模型的影响不同。因此,当检测到三维主体的物理运动时,同时根据主体骨骼模型的第一物理运动信息与摆动驱动关系确定三维虚拟对象骨骼模型的第二物理运动信息。

步骤s204,三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

具体地,获取到三维虚拟对象骨骼模型的第二物理运动信息后,根据第二物理运动信息控制三维虚拟对象骨骼模型进行对应的物理运动,从而通过三维虚拟对象骨骼模型带动与三维虚拟对象骨骼模型绑定的三维虚拟对象运动,实现三维虚拟对象跟随三维主体运动。

本实施例中,上述三维虚拟对象摆动方法通过检测三维主体的物理运动获取三维主体对应的主体骨骼模型对应的第一物理运动信息,并根据第一物理运动信息确定与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型对应的第二物理运动信息,从而使三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象跟随三维主体摆动。通过预先建立三维主体骨骼模型和三维虚拟对象骨骼模型,以及两者之间的驱动摆动关系,利用建模的方式构建骨骼模型更加精确的控制三维虚拟对象的摆动,并且通过建立三维主体骨骼模型与三维虚拟对象骨骼模型的驱动摆动关系,使三维虚拟对象根据三维主体的实时摆动情况摆动,摆动状态更加接近真实场景,从而提高了三维虚拟对象摆动的精确度和真实性。如图3所示,在一个实施例中,步骤s201之前还包括:

步骤s205,获取三维虚拟对象对应的属性信息,属性信息包括形状状态信息、材质信息中的至少一种。

具体地,在检测三维主体的物理运动之前需要建立三维虚拟对象对应的骨骼模型以及与三维主体的摆动驱动关系,以使三维虚拟对象能够跟随三维主体摆动。

其中,属性信息是指描述三维虚拟对象物理特征的相关信息,包括三维虚拟对象的形状状态信息、材质信息、种类信息等。形状状态信息反映三维虚拟对象的形状特征,如毛发的不同类型对应不同的形状特征,衣服款式的不同对应不同的形状特征。不同形状的三维虚拟对象能够发生的物理运动可能不同,如长直发能够产生的物理运动轨迹和卷发能够产生的物理运动轨迹不同,长裙和短裙能够产生的物理运动轨迹存在不同。材质信息是反映三维虚拟对象材质的特征,不同的材质对三维虚拟对象能够产生不同的影响,例如在相同的外力作用下比较柔软的布料产生的运动幅度相对于比较坚硬的布料产生的运动幅度大。

步骤s206,根据属性信息确定三维虚拟对象对应的物理运动方式,根据物理运动方式创建对应的骨骼链,骨骼链包括父级骨骼和子级骨骼。

其中,骨骼链由多个骨骼节点和骨骼组成,每个骨骼之间通过骨骼节点连接,骨骼包括父级骨骼和子级骨骼,其中父级骨骼是指骨骼根部的第一根骨骼,也就是最初建立的骨骼,其余骨骼都称为父级骨骼的子级骨骼,当根据骨骼建立的顺序,第二级骨骼也可以称为第三级骨骼的父级骨骼,以此类推,按照骨骼的建立顺序,先建立的骨骼可以作为后建立骨骼的父级骨骼。

具体地,不同的属性信息能够产生不同的物理运动,获取三维虚拟对象的属性信息后确定对应的物理运动方式。例如对于布料比较柔软的长裙,在三维主体骨骼模型的带动下,摆动的幅度相对于布料较硬的长裙摆动幅度较大,且裙摆部分摆动幅度最大,因此为布料比较柔软的长裙建立具有较多骨骼节点的骨骼链,且在裙摆部分增大骨骼节点的个数,便于长裙向各个方向摆动。而对于布料比较硬的长裙,则建立具有较少骨骼节点的骨骼链,当三维主体运动时,使长裙不会产生较大幅度的摆动。

进一步地,对于某些三维虚拟对象而言,可能需要多个骨骼链支持三维虚拟对象的物理运动。

步骤s207,根据骨骼链生成对应的三维虚拟对象骨骼模型。

具体地,根据三维虚拟对象的属性信息建立的骨骼链共同构成了三维虚拟对象骨骼模型,三维虚拟对象骨骼模型用来带动三维虚拟对象产生物理运动。

步骤s208,建立三维虚拟对象骨骼模型与三维主体对应的主体骨骼模型之间的摆动驱动关系。

具体地,为了使三维虚拟对象跟随三维主体产生摆动,将三维虚拟对象骨骼模型的节点与主体骨骼模型的节点建立绑定关系,如将人物头发的骨骼模型中的每一个骨骼链中对应的一个或多个骨骼节点与人物头部骨骼模型中的骨骼节点建立绑定关系,从而使人物头部发生物理运动时,带动人物头发做相应物理运动。进一步地,建立帮点关系的骨骼节点可以是任何一个骨骼节点,可以根据物理运动的需求设置。同时,摆动驱动关系中还可以设置骨骼节点之间的相互影响力,使摆动驱动关系更加自然。如设置人物头部产生物理运动的幅度和速度对人物头发产生的影响力关系,使得人物头部缓慢轻度摆动则头发轻轻摆动,人物头部快速绑定则头发大幅度快速摆动。

进一步地,不同的三维虚拟对象与不同的三维主体骨骼模型建立摆动驱动关系,如头发与头部建立摆动驱动关系,长裙与身体腿部或腰部建立摆动驱动关系,可以根据物理运动的需求设置。

本实施例中,通过获取三维虚拟对象的属性信息获取对应的物理运动方式,从而为三维虚拟对象创建对应的骨骼链,建立对应的骨骼模型带动三维虚拟对象运动,同时将主体骨骼模型与三维虚拟对象骨骼模型建立摆动驱动关系,使得三维虚拟对象能够根据三维主体的运动而摆动,通过建立骨骼链以及骨骼模型之间的摆动驱动关系能够使三维虚拟对象更加自然的跟随三维主体摆动。

在一个实施例中,步骤s201之前还包括:为三维虚拟对象骨骼模型配置运动脚本信息,运动脚本信息包括父级骨骼和子级骨骼分别对应的摆动幅度范围和惯性信息,父级骨骼和子级骨骼之间的摆动驱动力传递信息。

具体地,运动脚本信息是指描述三维虚拟对象骨骼模型相应物理运动的信息,是一种可执行文件,能够控制三维虚拟对象骨骼模型产生对应的运动。每一个骨骼链中的每一个骨骼均有对应的物理运动信息,包括每一个骨骼的摆动幅度范围信息和惯性信息,以及骨骼之间摆动驱动力的传递信息。其中,骨骼之间摆动驱动力的传递信息是指骨骼之间的相互作用力信息,骨骼链中每一个骨骼的摆动幅度和惯性信息均会影响同一骨骼链中的其他骨骼,也能够被其他骨骼影响。例如,对于长直发,当头部发生物理运动时,头发靠近头部的一端摆动幅度较小且惯性较小,远离头部的一端摆动幅度较大且惯性较大,设置对应的参数控制头发能够发生上述物理运动,如从发根到发尾逐步增大对骨骼节点摆动幅度范围信息和惯性信息的设置,每一个骨骼节点设置的物理运动参数信息构成了头发骨骼模型的运动脚本信息。

如图4所示,在一个实施例中,步骤s203包括:

步骤s203a,从第一物理运动信息获取主体骨骼模型发生物理运动的运动速度和运动幅度。

具体地,根据三维主体的物理运动获取此时主体骨骼模型的第一物理运动信息,第一物理信息中包括主体骨骼模型的各个运动参数信息,从第一物理运动信息中获取运动速度信息和运动幅度信息。

步骤s203b,根据摆动驱动关系确定与主体骨骼模型绑定的第一骨骼节点。

其中,第一骨骼节点是指三维虚拟对象骨骼模型中直接与主体骨骼模型建立绑定关系的骨骼节点,主体骨骼模型发生物理运动时,对三维虚拟对象产生的摆动驱动力直接作用在第一骨骼节点上,由第一骨骼节点带动同一个骨骼链上的其他骨骼运动。第一骨骼节点可能是多个,位于不同的骨骼链上。

具体地,三维虚拟对象骨骼模型中的每一条骨骼链至少一个骨骼节点预先与主体骨骼模型建立绑定关系,从而建立三维虚拟对象骨骼模型与主体骨骼模型的摆动驱动关系。当主体骨骼模型发生物理运动时,根据预先建立的摆动驱动关系能够确定三维虚拟对象骨骼模型对应的第一骨骼节点。

步骤s203c,根据主体骨骼模型的运动速度和运动幅度确定第一骨骼节点所在骨骼的运动速度和运动幅度。

具体地,在将主体骨骼模型的节点与三维虚拟对象骨骼模型的第一骨骼节点绑定时,根据三维虚拟对象骨骼模型能够发生的物理运动方式以及每一个第一骨骼节点所处的骨骼链在三维虚拟对象骨骼模型中的位置确定主题骨骼模型的节点与每一个第一骨骼节点之间的驱动力,也就是当主体骨骼模型发生物理运动时,对三维虚拟对象骨骼模型产生的影响力。

根据预先设置的主体骨骼模型与各个绑定的骨骼节点之间的相互影响力,获取到各个第一骨骼节点在主体骨骼模型发生物理运动时,根据本当前从主体骨骼模型获取的驱动力确定对应的运动速度与运动幅度。主体骨骼模型不同的运动速度和运动幅度对第一骨骼节点产生的影响不同,例如,当主体骨骼模型的运动速度较小,运动幅度较大时,第一骨骼节点根据驱动力产生的运动速度和运动幅度几乎与主体骨骼模型同步;当主体骨骼模型的运动速度较大、运动幅度较小时,第一骨骼节点获取较小的驱动力,由于惯性的作用产生较大的运动幅度,与主体骨骼模型产生较大的偏差。

进一步地,也可以设置对应的运动关系函数,根据第一骨骼节点在三维虚拟对象骨骼模型中的位置分配不同的驱动力,并建立驱动力与运动幅度和运动速度之间的关系。

步骤s203d,根据第一骨骼节点所在骨骼的运动速度和运动幅度得到骨骼链上的其它骨骼的运动速度和运动幅度。

具体地,三维虚拟对象骨骼模型中的其他骨骼节点从位于同一个骨骼链的第一骨骼节点获取驱动力,其他骨骼节点是指除了第一骨骼节点之外的骨骼节点。当第一骨骼节点从主体骨骼模型的得到对应的摆动驱动力后,根据预先设置的骨骼之间的相互影响力将摆动驱动力分别传递到同一个骨骼链中与第一骨骼节点直接相连的骨骼,获得摆动驱动力的骨骼再次将摆动驱动力传递给与之相邻的骨骼,以此类推,通过骨骼之间的相互作用力,将摆动驱动力依次传递到所有骨骼,从而带动骨骼链进行物理运动。

进一步地,每个骨骼之间的相互作用力不同,传递的摆动驱动力大小也不相同,并且每个骨骼的运动速度的方向可能相同也可能不同,且由于惯性的作用,可能与三维主体物理运动的方向相反。例如头发骨骼模型中间的一个骨骼节点与头部骨骼模型建立了绑定关系,则该头发骨骼节点根据头部物理运动获取摆动驱动力后,将摆动驱动力分别传递到与之相连的两个骨骼,靠近头发尾部的骨骼由于接收到的摆动驱动力较小,在惯性作用下产生的偏离主体骨骼模型的摆动幅度较大,靠近头发顶部的骨骼摆动幅度较小,接收到的摆动驱动力较大,惯性产生的影响力较小,则偏离主体骨骼模型的摆动幅度较小,几乎与主体骨骼模型同向运动。

本实施例中,通过获取主体骨骼模型的运动速度和运动幅度,根据预先建立的摆动驱动力关系获取与主体骨骼模型建立绑定关系的三维虚拟对象骨骼模型的骨骼节点的摆动速度和摆动幅度,然后根据三维虚拟对象骨骼模型中骨骼的相互影响力获取其他骨骼的摆动速度和摆动幅度,从而使三维虚拟对象骨骼模型发生对应的物理运动。通过设置骨骼之间的相互影响力传递物理运动产生的摆动驱动力,从而使三维主体骨骼模型带动三维虚拟对象骨骼模型运动,使三维虚拟对象骨骼模型的运动更加真实自然。

如图5所示,在一个实施例中,三维虚拟对象摆动方法还包括:

步骤s301,利用预先与三维虚拟对象匹配的第一材质碰撞检测器和与三维主体匹配的第二材质碰撞检测器检测三维虚拟对象是否与三维主体发生碰撞。

其中,材质碰撞检测器能够检测到物体是否发生碰撞,可以是unity3d中包含了很多种类的一群组件。

具体地,在unity3d中当三维物体中安装了材质碰撞检测器时,两个三维物体在发生碰撞时,材质碰撞检测器能够检测到碰撞,并触发对应的事件,防止两个物体之间相互穿透。

根据待检测对象的类型不同可以设置不同的材质碰撞检测器,预先根据三维虚拟对象的类型设置匹配的第一材质碰撞检测器,根据三维主体的类型设置匹配的第二材质碰撞检测器。进一步地,可以通过在unity3d中配置相关参数,在建立的三维虚拟对象模型和三维主体模型中设置材质碰撞检测器。

步骤s302,当检测到三维虚拟对象与三维主体发生碰撞时,截获三维虚拟对象骨骼模型的当前物理运动信息,根据当前物理运动信息截止三维虚拟对象向三维主体的运动。

具体地,当三维主体和三维虚拟对象发生碰撞时,材质碰撞检测器检测到碰撞并触发检测事件截获当前三维虚拟对象骨骼模型的物理运动信息,并根据获取的物理运动信息通过运动脚本截止三维虚拟对象向三维主体的运动。进一步地,当材质碰撞检测器检测到碰撞时,能够触发三维虚拟对象的运动机制,根据发生碰撞时获取的物理运动信息改变三维虚拟对象的运动轨迹,改变运动轨迹的方式可以是停止三维虚拟对象的运动,使三维虚拟对象停止在于三维主体接触的位置,也可以是两者发生碰撞之后,产生反向作用力控制三维虚拟对象向与原来运动方向相反的方向运动。

例如,根据预先设置的参数,当身体发生物理运动时,对长裙裙摆的摆动驱动力使长裙能够摆动的幅度为20-100,在长裙摆动的过程中,如摆动幅度为80时,材质碰撞检测器检测到长裙与身体发生碰撞,若继续摆动则会穿透身体,获取此时摆动幅度参数,将长裙的摆动幅度截止到80处,阻止长裙继续摆动,从而避免长裙穿透身体模型的情况。

本实施例中,通过预先设置与三维虚拟对象匹配的第一材质碰撞检测器以及与三维主体碰撞的第二材质碰撞检测器检测三维虚拟对象与三维主体是否发生碰撞,进一步地在检测到碰撞时截获对应的物理运动信息,并截止三维虚拟对象的物理运动,从而避免三维主体与三维虚拟对象发生碰撞或者发生相互穿透的情况,使三维虚拟对象的运动场景更加真实。

在一个实施例中,三维虚拟对象摆动方法还包括:添加与三维虚拟对象的形状匹配的第一材质碰撞检测器,材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内,添加与三维主体的形状匹配的第二材质碰撞检测器,第二材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内。

具体地,材质碰撞检测器具有不同的形状,能够根据需要配置,一般根据检测碰撞的物体的形状进行设置,以便能够对待检测碰撞物体上的任何一点是否发生碰撞进行检测,如对于墙壁,设置矩形或者长方体形状的材质碰撞检测器;对于身体模型,设置圆柱形材质碰撞检测器等。

根据待检测碰撞的模型的类型的不同,设置不同的材质碰撞检测器,保证材质碰撞检测器的检测范围能够将待检测碰撞的模型完全包裹在内,以使在模型发生碰撞时,保证能够及时检测到碰撞。

本实施例中,根据三维主体和三维虚拟对象的形状分别设置匹配的材质碰撞检测器,以使材质碰撞检测器能够对三维主体和三维虚拟对象中的每一个点是否发生碰撞进行检测,从而提高了碰撞检测的精确度和及时性,更好的避免三维虚拟对象与三维主体发生碰撞,进一步提高了三维虚拟对象物理运动的精确性和真实性。

如图6所示,在一个具体的实施例中,提供一种三维虚拟对象摆动方法,包括以下内容:

步骤s401,获取三维虚拟对象的属性信息,根据属性信息确定三维虚拟对象的物理运动方式。

步骤s402,根据三维虚拟对象的物理运动方式创建对应的骨骼链,生成对应的三维虚拟对象骨骼模型。

如图6a所示,根据图中发型510的物理运动方式通过3dmax创建对应的骨骼链520,由于发型510能够一起摆动,因此只建立一个骨骼链520,并由该骨骼链520生成对应的三维虚拟对象骨骼模型。

在其他实施例中,三维虚拟对象骨骼模型可以包括多个骨骼链,不同发型或不同材质的三维虚拟对象建立的骨骼链数目和形状均可不同。如图6b所示,在建立模型的过程中,建立人物头部模型610,包括模型网格610a,和适合大部分发型的骨骼模型620,骨骼模型620中包括多个骨骼链,每一个骨骼链均与头部模型610建立绑定关系,保证在头部发生物理运动时,不同发型的骨骼模型620能够发生对应的物理运动。进一步地,也可以使用avatar系统的换装功能预先设置不同服装类型对应的骨骼模型,减少内存损耗。

步骤s403,为三维骨骼对象模型配置运动脚本信息和材质碰撞检测器,并建立三维虚拟对象骨骼模型与主体骨骼模型的摆动驱动关系。

步骤s404,检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息。

步骤s405,获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型。

步骤s406,从第一物理运动信息获取主体骨骼模型发生物理运动的运动速度和运动幅度,根据摆动驱动关系确定与主体骨骼模型绑定的第一骨骼节点。

步骤s407,根据主体骨骼模型的运动速度和运动幅度确定第一骨骼节点所在骨骼的运动速度和运动幅度。

步骤s408,根据第一骨骼节点所在骨骼的运动速度和运动幅度得到骨骼链上的其它骨骼的运动速度和运动幅度。

步骤s409,三维虚拟对象骨骼模型根据各个骨骼的运动速度和运动幅度发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

具体地,三维虚拟对象由于三维虚拟对象骨骼模型的物理运动产生对应的物理运动样式。如图7所示,当头部发生向左摆动的物理运动时,头部的骨骼模型产生驱动力作用在头发720的骨骼节点上,头发720与头部骨骼接触的骨骼节点获取较大的驱动力,能够克服惯性的影响发生与头部骨骼相同的向左摆动的物理运动,而头发720尾部的骨骼710由于获取到的驱动力较小,在惯性的作用下几乎不发生摆动,从而与头部、头发顶部发生相对位移,使头发720产生了向右偏移的运动样式。

步骤s410,在摆动过程中,若通过材质碰撞检测器检测到三维虚拟对象与三维主体发生碰撞,则截获三维虚拟对象骨骼模型的当前物理运动信息,根据当前物理运动信息截止三维虚拟对象向三维主体的运动。

具体地,当三维虚拟对象不是由于三维主体带动产生的物理运动时,而是由于别的外力,比如风的作用产生物理运动时,材质碰撞检测器仍然可以对碰撞进行检测,并截止三维虚拟对象的运动,提高三维虚拟对象物理运动的真实性。

通过三维虚拟对象的三维模型建立对应的三维骨骼模型,并根据物理运动信息使三维骨骼模型发生物理运动。

本实施例中,通过预先建立主体骨骼模型、不同三维虚拟对象对应的骨骼模型、主体骨骼模型与三维虚拟对象骨骼模型之间的摆动驱动关系、并且在三维虚拟对象边界和三维主体边界分别设置材质碰撞检测器检测进行物理运动的过程中是否发生碰撞,使用建模的方式构建骨骼模型,利用骨骼模型之间的摆动驱动关系,使三维主体骨骼模型带动三维虚拟对象骨骼模型运动,从而达到三维主体带动三维虚拟对象运动的效果,并且使用材质碰撞检测器对三维虚拟对象进行物理运动的过程进行检测,避免发生碰撞,使三维虚拟对象的物理运动更加接近真实场景,提高了精确度和真实性。

如图8所示,在一个实施例中,提供一种三维虚拟对象摆动装置,包括以下内容:

第一获取模块801,用于检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息。

第二获取模块802,用于获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型。

驱动信息获取模块803,用于根据第一物理运动信息和摆动驱动关系确定三维虚拟对象骨骼模型对应的第二物理运动信息。

驱动模块804,用于三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

上述三维虚拟对象摆动装置,通过检测三维主体的物理运动获取三维主体对应的主体骨骼模型对应的第一物理运动信息,并根据第一物理运动信息确定与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型对应的第二物理运动信息,从而使三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象跟随三维主体摆动。通过预先建立三维主体骨骼模型和三维虚拟对象骨骼模型,以及两者之间的驱动摆动关系,利用建模的方式构建骨骼模型更加精确的控制三维虚拟对象的摆动,并且通过建立三维主体骨骼模型与三维虚拟对象骨骼模型的驱动摆动关系,使三维虚拟对象根据三维主体的实时摆动情况摆动,摆动状态更加接近真实场景,从而提高了三维虚拟对象摆动的精确度和真实性。

如图9所示,在一个实施例中,三维虚拟对象摆动装置还包括:

属性信息获取模块805,用于获取三维虚拟对象对应的属性信息,属性信息包括形状状态信息、材质信息中的至少一种。

三维虚拟对象模型建立模块806,用于根据属性信息确定三维虚拟对象对应的物理运动方式,根据物理运动方式创建对应的骨骼链,骨骼链包括父级骨骼和子级骨骼,根据骨骼链生成对应的三维虚拟对象骨骼模型。

摆动驱动关系建立模块807,用于建立三维虚拟对象骨骼模型与三维主体对应的主体骨骼模型之间的摆动驱动关系。

在一个实施例中,三维虚拟对象模型建立模块806还用于为三维虚拟对象骨骼模型配置运动脚本信息,运动脚本信息包括父级骨骼和子级骨骼分别对应的摆动幅度范围和惯性信息,父级骨骼和子级骨骼之间的摆动驱动力传递信息。

如图10所示,在一个实施例中,驱动信息获取模块803包括:

主体骨骼模型运动信息获取模块803a,用于从第一物理运动信息获取主体骨骼模型发生物理运动的运动速度和运动幅度;

绑定位置获取模块803b,用于根据摆动驱动关系确定与主体骨骼模型绑定的第一骨骼节点;

第一骨骼节点运动信息获取模块803c,用于根据主体骨骼模型的运动速度和运动幅度确定第一骨骼节点所在骨骼的运动速度和运动幅度;

骨骼链运动信息获取模块803d,用于根据第一骨骼节点所在骨骼的运动速度和运动幅度得到骨骼链上的其它骨骼的运动速度和运动幅度。

如图11所示,在一个实施例中,三维虚拟对象摆动装置还包括:

碰撞检测模块901,用于利用预先与三维虚拟对象匹配的第一材质碰撞检测器和与三维主体匹配的第二材质碰撞检测器检测三维虚拟对象是否与三维主体发生碰撞。

运动控制模块902,用于当检测到三维虚拟对象与三维主体发生碰撞时,截获当前三维虚拟对象骨骼模型的当前物理运动信息,根据当前物理运动信息截止三维虚拟对象向三维主体的运动。

如图12所示,在一个实施例中,三维虚拟对象摆动装置还包括:

材质碰撞器设置模块903,用于添加与三维虚拟对象的形状匹配的第一材质碰撞检测器,材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内,添加与三维主体的形状匹配的第二材质碰撞检测器,第二材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内。

在一个实施例中,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,计算机可执行指令被处理器执行时,使得处理器执行以下步骤:检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息;获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型;根据第一物理运动信息和摆动驱动关系确定三维虚拟对象骨骼模型对应的第二物理运动信息;三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

上述计算机可读存储介质,通过检测三维主体的物理运动获取三维主体对应的主体骨骼模型对应的第一物理运动信息,并根据第一物理运动信息确定与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型对应的第二物理运动信息,从而使三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象跟随三维主体摆动。通过预先建立三维主体骨骼模型和三维虚拟对象骨骼模型,以及两者之间的驱动摆动关系,从而当三维主体发生物理运动时,获取三维主体骨骼模型的第一物理运动信息,并根据驱动摆动关系由三维主体骨骼模型带动三维虚拟对象骨骼模型运动,以使三维虚拟对象在三维主体的驱动力作用下发生物理运动,摆动状况更加接近真实场景,提高了三维虚拟对象摆动的精确度和真实性。

在一个实施例中,计算机可执行指令被处理器执行时,还使得处理器执行以下步骤:获取三维虚拟对象对应的属性信息,属性信息包括形状状态信息、材质信息中的至少一种;根据属性信息确定三维虚拟对象对应的物理运动方式,根据物理运动方式创建对应的骨骼链,骨骼链包括父级骨骼和子级骨骼;根据骨骼链生成对应的三维虚拟对象骨骼模型;建立三维虚拟对象骨骼模型与三维主体对应的主体骨骼模型之间的摆动驱动关系。

在一个实施例中,计算机可执行指令被处理器执行时,还使得处理器执行以下步骤:为三维虚拟对象骨骼模型配置运动脚本信息,运动脚本信息包括父级骨骼和子级骨骼分别对应的摆动幅度范围和惯性信息,父级骨骼和子级骨骼之间的摆动驱动力传递信息。在一个实施例中,计算机可读指令还使得处理器执行以下步骤:从第一物理运动信息获取主体骨骼模型发生物理运动的运动速度和运动幅度;根据摆动驱动关系确定与主体骨骼模型绑定的第一骨骼节点;根据主体骨骼模型的运动速度和运动幅度确定第一骨骼节点所在骨骼的运动速度和运动幅度;根据第一骨骼节点所在骨骼的运动速度和运动幅度得到骨骼链上的其它骨骼的运动速度和运动幅度。

在一个实施例中,计算机可执行指令被处理器执行时,还使得处理器执行以下步骤:利用预先与三维虚拟对象匹配的第一材质碰撞检测器和与三维主体匹配的第二材质碰撞检测器检测三维虚拟对象是否与三维主体发生碰撞;当检测到三维虚拟对象与三维主体发生碰撞时,截获当前三维虚拟对象骨骼模型的当前物理运动信息,根据当前物理运动信息截止三维虚拟对象向三维主体的运动。

在一个实施例中,计算机可执行指令被处理器执行时,还使得处理器执行以下步骤:添加与三维虚拟对象的形状匹配的第一材质碰撞检测器,材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内,添加与三维主体的形状匹配的第二材质碰撞检测器,第二材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内。

在一个实施例中,提供一种计算机设备,包括存储器和处理器,存储器中储存有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行以下步骤:检测三维主体的物理运动,获取三维主体对应的主体骨骼模型在物理运动时对应的第一物理运动信息;获取与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型;根据第一物理运动信息和摆动驱动关系确定三维虚拟对象骨骼模型对应的第二物理运动信息;三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象骨骼模型对应的三维虚拟对象跟随三维主体摆动。

上述计算机设备,通过检测三维主体的物理运动获取三维主体对应的主体骨骼模型对应的第一物理运动信息,并根据第一物理运动信息确定与主体骨骼模型存在摆动驱动关系的三维虚拟对象骨骼模型对应的第二物理运动信息,从而使三维虚拟对象骨骼模型根据第二物理运动信息发生对应的物理运动,以使三维虚拟对象跟随三维主体摆动。通过预先建立三维主体骨骼模型和三维虚拟对象骨骼模型,以及两者之间的驱动摆动关系,从而当三维主体发生物理运动时,获取三维主体骨骼模型的第一物理运动信息,并根据驱动摆动关系由三维主体骨骼模型带动三维虚拟对象骨骼模型运动,以使三维虚拟对象在三维主体的驱动力作用下发生物理运动,摆动状况更加接近真实场景,提高了三维虚拟对象摆动的精确度和真实性。

在一个实施例中,计算机可读指令还使得处理器执行以下步骤:获取三维虚拟对象对应的属性信息,属性信息包括形状状态信息、材质信息中的至少一种;根据属性信息确定三维虚拟对象对应的物理运动方式,根据物理运动方式创建对应的骨骼链,骨骼链包括父级骨骼和子级骨骼;根据骨骼链生成对应的三维虚拟对象骨骼模型;建立三维虚拟对象骨骼模型与三维主体对应的主体骨骼模型之间的摆动驱动关系。

在一个实施例中,计算机可读指令还使得处理器执行以下步骤:为三维虚拟对象骨骼模型配置运动脚本信息,运动脚本信息包括父级骨骼和子级骨骼分别对应的摆动幅度范围和惯性信息,父级骨骼和子级骨骼之间的摆动驱动力传递信息。

在一个实施例中,计算机可读指令还使得处理器执行以下步骤:从第一物理运动信息获取主体骨骼模型发生物理运动的运动速度和运动幅度;根据摆动驱动关系确定与主体骨骼模型绑定的第一骨骼节点;根据主体骨骼模型的运动速度和运动幅度确定第一骨骼节点所在骨骼的运动速度和运动幅度;根据第一骨骼节点所在骨骼的运动速度和运动幅度得到骨骼链上的其它骨骼的运动速度和运动幅度。

在一个实施例中,计算机可读指令还使得处理器执行以下步骤:利用预先与三维虚拟对象匹配的第一材质碰撞检测器和与三维主体匹配的第二材质碰撞检测器检测三维虚拟对象是否与三维主体发生碰撞;当检测到三维虚拟对象与三维主体发生碰撞时,截获当前三维虚拟对象骨骼模型的当前物理运动信息,根据当前物理运动信息截止三维虚拟对象向三维主体的运动。

在一个实施例中,计算机可读指令还使得处理器执行以下步骤:添加与三维虚拟对象的形状匹配的第一材质碰撞检测器,材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内,添加与三维主体的形状匹配的第二材质碰撞检测器,第二材质碰撞检测器形成的碰撞检测范围将三维虚拟对象包裹在内。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1