三维模型驱动方法、装置、终端及计算机可读存储介质与流程

文档序号:20922554 发布日期:2020-05-29 14:20
三维模型驱动方法、装置、终端及计算机可读存储介质与流程

本申请涉及计算机领域,特别是涉及一种三维模型驱动方法、装置、终端及计算机可读存储介质。



背景技术:

三维模型是物体的多边形表示方式,通常用计算机或者其它视频设备进行显示。显示的物体可以是现实世界的实体,也可以是虚构的物体。任何物理自然界存在的东西都可以用三维模型表示。

目前能够应用三维建模的应用软件实现三维模型的动画效果。



技术实现要素:

本申请主要提供一种三维模型驱动方法、装置、终端及计算机可读存储介质。

本申请采用的第一个技术方案是:确定三维模型的目标骨骼,目标骨骼从至少两个候选骨骼中得到;将目标骨骼与三维模型绑定,其中,目标骨骼用于驱动三维模型运动。

其中,确定三维模型的目标骨骼包括:

获取三维模型的网格顶点位置信息;

利用网格顶点位置信息计算三维模型的骨骼结构;

从至少两个候选骨骼中确定与三维模型的骨骼结构相匹配的目标骨骼。

其中,在从至少两个候选骨骼中确定与三维模型的骨骼结构相匹配的目标骨骼之后,包括:

按照预设规则对三维模型的骨骼结构与目标骨骼的匹配度进行评估,并在终端界面上显示评估结果;

接收根据评估结果输入的选择指令,选择指令用于指示是否将目标骨骼与三维模型进行绑定。

其中,将目标骨骼与三维模型绑定包括:

计算三维模型的网格顶点与目标骨骼的骨骼点的相对关系;

利用相对关系设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系,以使得目标骨骼与三维模型绑定,从而利用目标骨骼驱动三维模型。

其中,将目标骨骼与三维模型绑定之后,还包括:

通过摄像头实时采集包含目标物体的图像,其中,三维模型为目标物体对应的虚拟模型;

根据图像获取目标物体的运动参数;

根据运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动驱动三维模型运动。

其中,将目标骨骼与三维模型绑定之后,还包括:

获取预设的运动参数;

根据预设的运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动驱动三维模型运动。

其中,确定三维模型的目标骨骼包括:

确定三维模型在第一形态下的第一目标骨骼或第二形态下的第二目标骨骼;

将目标骨骼与三维模型绑定包括:

将第一目标骨骼与三维模型绑定,使得三维模型通过第一目标骨骼进行驱动,或,将三维模型与第一目标骨骼取消绑定,并将第二目标骨骼与三维模型绑定,使得三维模型通过第二目标骨骼进行驱动。

其中,在将目标骨骼与三维模型绑定后,包括:

通过摄像头获取周围环境数据;

参照环境数据构建虚拟环境;

将与目标骨骼绑定的三维模型放置于虚拟环境内,以使得在虚拟环境中驱动与目标骨骼绑定的三维模型。

其中,获取候选骨骼的方式,包括:

将骨骼数据库中提供的不同动物体的所有部位的骨骼肢节进行组装,获得候选骨骼。

本申请采用的第二个技术方案是:一种三维模型驱动装置,包括确定模块,用于确定三维模型的目标骨骼,目标骨骼从至少两个候选骨骼中得到;绑定模块,用于将目标骨骼与三维模型绑定,其中,目标骨骼用于驱动三维模型运动。

本申请采用的第三个技术方案是:一种三维模型驱动终端,包括存储器和处理器,处理器耦接存储器,用于执行三维模型驱动方法。

本申请采用的第四个技术方案是:一种计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现三维模型驱动方法。

本申请的有益效果:通过在多个候选骨骼中确定用于三维模型绑定的目标骨骼,改善了一个三维模型只能有一个与之对应的可用来匹配的目标骨骼的问题,现在供三维模型匹配的候选骨骼更多,使得可选择面更广。

附图说明

图1是本申请三维模型驱动方法实施例的流程示意图;

图2是本申请三维模型驱动方法实施例中示出选择三维模型文件的用户交互界面示意图;

图3是本申请三维模型驱动方法实施例中示出选中的三维模型文件的用户交互界面示意图;

图4是本申请三维模型驱动方法实施例中示出将三维模型对准目标骨骼的用户交互界面示意图;

图5是本申请三维模型驱动方法实施例中示出选择预设动画驱动三维模型的用户交互界面示意图;

图6是本申请三维模型驱动方法实施例中示出在预设环境中驱动三维模型的用户交互界面示意图;

图7是本申请三维模型驱动装置实施例的结构示意图;

图8是本申请三维模型驱动终端实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本申请保护的范围。

请参阅图1,图1是本申请三维模型驱动方法一实施例的流程示意图。如图1所示,本实施例的三维模型驱动方法包括如下步骤:

s101:确定三维模型的目标骨骼,目标骨骼从至少两个候选骨骼中得到。

三维模型的来源可以是通过移动终端建模设备的软件建立、通过专业三维建模软件制作或者是虚拟的三维形象。目标骨骼从至少两个候选骨骼中得到。其中候选骨骼包括人类骨骼、动物骨骼和虚拟模型骨骼。虚拟模型骨骼包括任意形态的骨骼。获取候选骨骼的方式可以包括,将骨骼数据库中提供的不同动物体的所有部位的骨骼肢节进行组装获得候选骨骼。骨骼肢节包括各个动物体的头盖骨、椎骨、尾骨、胸骨等等。可以将这些不同部位的骨骼肢节进行组装获得一个新的候选骨骼。除此之外,候选骨骼可以是系统预先设置的,也可以是用户绘制的。其中系统预先设置指的是系统自带的或者用户在网上下载保存在数据库里面的。用户绘制即用户在终端设备的三维建模应用软件上绘制的目标骨骼。

从至少两个候选骨骼中确定与三维模型的骨骼结构相匹配的目标骨骼。其中,与三维模型的骨骼结构相匹配的目标骨骼可以是骨骼数据库中任意一个骨骼,并不限定为与三维模型的骨骼结构匹配度最高的候选骨骼为目标骨骼。

当确定与三维模型匹配的目标骨骼之后,按照预设规则对三维模型的骨骼结构与目标骨骼的匹配度进行评估,并在终端界面上显示评估结果;接收根据评估结果输入的选择指令,选择指令用于指示是否将目标骨骼与三维模型进行绑定。当接收到用户输入的确定选择指令之后,终端可以将目标骨骼与三维模型进行绑定,如果接收到用户输入的返回选择指令后,终端将目标骨骼放回骨骼数据库中。由用户重新在候选骨骼中选择目标骨骼。

预设规则可以是根据三维模型的骨骼结构与目标骨骼的骨骼点进行匹配,匹配程度对匹配度进行评估。其中,可以显示具体的匹配度数值,还可在此基础上显示当三维模型与该目标骨骼绑定之后的三维模型的运动速度及初步的驱动状态。在显示评估的结果之后,用户可根据评估结果决定是否需要进行绑定,如果匹配度不高,但终端仍然接收到匹配指令时,终端将会强制将目标骨骼与三维模型进行绑定。

其中,三维模型的目标骨骼还可根据三维模型的形态来确定目标骨骼。具体地,确定三维模型在第一形态下的第一目标骨骼或第二形态下的第二目标骨骼。第一形态与第二形态属于不同的运动形态;或,第一形态、第二形态中的一个是静止形态,另外一个是运动形态;运动形态包括跳动形态、走路形态、飞行形态、爬行形态中的一个。

例如,第一形态为双脚走路的形态,可绑定人形骨骼或者猩猩之类的骨骼,第二形态可以是飞行的形态,此时可以绑定四脚飞行动物的目标骨骼。

因此,根据三维模型的不同形态确定目标骨骼,当根据三维模型的第一形态确定一个目标骨骼之后,如果三维模型的形态需要改变,则需要先将绑定的第一目标骨骼进行解绑。例如,第一形态为双脚走路的形态要转变为第二形态,如,飞行的形态,那么第一形态可以绑定人形的骨骼,在将人形骨骼解绑之后,第二形态可绑定四脚飞行动物的骨骼。因此,根据本申请的方法还能为一个三维模型的不同形态绑定不同的目标骨骼。

参照图2和图3,图2是本实施例示出选择三维模型文件的用户交互界面示意图,图3是示出选中的三维模型文件的用户交互界面示意图。用户可以在终端选择三维模型,当终端接收到针对三维模型的点击指令后,则选中该三维模型,作为驱动的对象,并将选中的三维模型展现在终端界面上。

确定三维模型的目标骨骼过程中,首先,解析三维模型文件,获取三维模型的网格顶点位置信息,利用三维模型的网格顶点位置信息计算出三维模型的骨骼结构,并对计算得出的骨骼结构进行装配获得完整的骨骼结构。接着,在骨骼数据库中匹配三维模型的骨骼结构进而得到目标骨骼。因此,通过计算三维模型的网格顶点信息获得三维模型的骨骼结构可以方便从候选骨骼中确定与三维模型对应的目标骨骼。

具体地,将装配后的完整的骨骼结构,从至少两个候选骨骼中得到目标骨骼。本实施例中选择目标骨骼的方式具体是接收用户点击候选骨骼的指令,响应点击指令将点击指令对应的候选骨骼作为目标骨骼。在这种情况下就可以在终端界面上显示三维模型与目标骨骼的匹配度评估结果,供用户参考。

因此,在确定目标骨骼之后,还能按照预设规则对三维模型的骨骼结构与目标骨骼的匹配度进行评估,通过提供这个匹配度评价的结果,用户可以根据这个结果决定是否继续绑定三维模型和这个目标骨骼,使得三维模型和匹配度高的目标骨骼绑定之后的驱动更自然。

在其他实施例中,还可在骨骼数据库中按照预设的方式同各个候选骨骼进行匹配,得到目标骨骼。这里预设的方式可以是按照获取三维模型的骨骼结构的特征数据与骨骼数据库中各个候选骨骼的特征数据进行匹配,查找满足与三维模型的骨骼结构的特征数据匹配度的候选骨骼,这个匹配度的大小可以由用户自定义或者由系统默认,找出符合条件的候选骨骼之后,将符合条件的候选骨骼显示在终端界面上,由用户选择用于匹配的目标骨骼或用户在预设时间内未选择时,由系统默认匹配度最高的候选骨骼作为三维模型的目标骨骼。此时,特征数据可以是候选骨骼或骨骼结构的各级骨骼点特征,包括主要骨骼点数量以及主要骨骼点相互之间的位置关系。

s102:将目标骨骼与三维模型绑定,其中,目标骨骼用于驱动三维模型运动。

参见图4,图4是本实施例中示出将三维模型对准目标骨骼的用户交互界面示意图。选定目标骨骼之后,将三维模型对准目标骨骼,作为骨骼绑定的标准位姿。之后,计算三维模型的各个网格顶点与目标骨骼的骨骼点的相对关系。相对关系包括各个网格顶点与目标骨骼的骨骼点的对应关系、以及参考距离、角度等相对关系。利用计算得出的相对关系,即网格顶点与目标骨骼的骨骼点的对应关系、以及参考距离、角度等相对关系,设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系,从而通过骨骼点的位移或旋转角度来控制与之对应的网格顶点移动,然后通过这些与骨骼点对应的网格顶点移动,进而带动其他网格顶点移动。从而认为目标骨骼与三维模型绑定,即可利用目标骨骼驱动三维模型。所谓的动态相对关系指的是各个网格顶点随着骨骼点的移动,会如何移动。例如,当一个骨骼点从a位置移动到b位置时,与之对应的网格顶点会随着从c位置移动到d位置,并带动未与骨骼点绑定的网格点一起相对移动,其中c位置与a位置对应,d位置与b位置对应。即通过设置这种动态相对关系可以知道三维模型在运动过程中是怎样随着目标骨骼的运动而运动的,使得三维模型具有目标骨骼的形态。因此,将三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系设置之后,使得驱动三维模型时三维模型的动作更加流畅。

例如,如果不设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系,那么当目标骨骼的骨骼点移动时,三维模型的网格顶点可能会相对机械的移动到对应的位置,整个驱动过程中,就像牵动木偶的关节移动那样,只是几个点机械性地移动,如果设置了三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系之后,在骨骼点移动过程中还能带动未与骨骼点绑定的网格顶点随之相对移动,从而整个驱动三维模型的动作更加流畅。

一实施例中,将第一目标骨骼与三维模型进行绑定之后,使得三维模型通过第一目标骨骼进行驱动,无论三维模型是否已经绑定第一形态下的第一目标骨骼,当三维模型的形态需要状态为第二形态时,都是需要继续用计算得出的三维模型的骨骼结构从至少两个候选骨骼中进行匹配,进而得到第二目标骨骼。绑定第二目标骨骼的过程之前需要先将第一目标骨骼与三维模型解绑,并将第二目标骨骼与三维模型绑定,使得三卧模型不再根据第一目标骨骼进行驱动,而是根据第二目标骨骼进行驱动。

通过从至少两个候选骨骼中得到与三维模型匹配的目标骨骼,使得一个三维模型可绑定的目标骨骼的选择性更多。

通过根据三维模型的不同形态确定需要绑定的目标骨骼,方便用户根据三维模型不同形态挑选需要绑定目标骨骼,从而解决每一三维模型不管处于什么形态只能设置一种目标骨骼的问题。

在将目标骨骼与三维模型绑定之后,通过摄像头采集包含目标物体的图像,其中,三维模型为目标物体对应的虚拟模型。具体地,开启摄像头,实时采集位于相机平面中的人体、动物体或虚拟模型的图像,即当打开摄像头之后,相机平面上可能会出现人体、动物体或虚拟模型。此时,获取人体、动物体或虚拟模型的图像,并根据图像获取目标物体的运动参数,即获取人体、动物体或虚拟模型的骨骼点的运动参数,这里的骨骼点并不是人体、动物体或虚拟模型的全部骨骼点,而是其骨骼关键点,例如各大关节点。根据运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动驱动三维模型运动。

具体地,将获取到的人体、动物体或虚拟模型的骨骼点对应到与三维模型绑定的第一目标骨骼或第二目标骨骼的各个骨骼点上,使得人体、动物体或虚拟模型的骨骼点与三维模型绑定的目标骨骼的骨骼点形成对应的关系。

当形成这种对应关系之后,通过摄像头对人体、动物体或虚拟模型进实时骨骼检测,可以获取人体、动物体或虚拟模型的骨骼点的运动参数。除此之外,还可以获取旋转过程中,各个骨骼关键点的四元素信息,四元素信息即各个骨骼关键点在三维空间上的旋转及定向信息。目标骨骼的骨骼点的运动参数与检测到的人体、动物体或虚拟物体的骨骼点的运动轨迹是相对应的,即通过对人体、动物体或虚拟物体的实时骨骼检测,可以实时获取人体、动物体或虚拟模型的3d位姿,并作为驱动模型的输入信息,使得三维模型与该人体、动物体或虚拟模型的动作一致。从而能够实现利用目标物体实时驱动三维模型,通过实体进行实时驱动可以在应用层上实现实时驱动三维模型效果,不需要预先设置各个目标骨骼的动画且骨骼动作更加多样。

因此,在绑定目标骨骼之后,通过摄像头实时获取目标物体的运动参数来驱动目标骨骼的骨骼点移动,从而驱动三维模型运动。通过实时驱动三维模型可以使得驱动的动作更多样,三维模型的动作更丰富。

参见图5,图5是本实施例中示出选择预设动画驱动三维模型的用户交互界面示意图。除了利用目标物体进行实时驱动三维模型之外,还可以通过获取预设的运动参数,预设的运动参数可以是真实录制的人体、动物体或虚拟模型的预设动画中骨骼点的运动参数,预设动画可以是在终端上绘制的骨骼动画,系统自带的骨骼动画或者用户自行在网上下载的骨骼动画等等。获取预设的运动参数之后,根据预设的运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动进而驱动三维模型运动。从而可以获得三维模型的驱动动画。

通过获取预设的运动参数来驱动三维模型的方式可以在找不到合适的目标物体进行驱动时使用,获取预设的运动参数来驱动三维模型的方式和实时目标物体骨骼驱动方式结合可以适用更多变更复杂的环境,使得驱动三维模型更加方便。

参见图6,图6是本实施例中示出在预设环境中驱动三维模型的用户交互界面示意图。其中,可在虚拟环境中驱动三维模型。通过摄像头获取周围环境数据,并参照环境数据构建虚拟环境,将与目标骨骼绑定的三维模型放置于虚拟环境中,以使得在虚拟环境中驱动与目标骨骼绑定的三维模型。具体地,开启摄像头,在正常拍摄模式下或其他模式下获取周围环境数据,例如,环境数据可以是周围环境中有那些物体,物体外在形象以及各个物体的相对位置关系等等,参照这些环境数据构建虚拟环境,也就是可以用虚拟的物体代替获取到的周围环境中真实的这些物体并且虚拟物体的外在形象以及他们的相对位置关系同真实环境中的一致或允许存在一定的相对误差,相对误差的大小可以由用户自行设置。其中,参照环境数据实时构建虚拟环境是实时进行的,即获取周围环境数据也是实时获取的。通过虚拟物体其实是重现真实环境的一个过程。在构建了虚拟环境之后将与目标骨骼绑定的三维模型放置于相机画面中的虚拟环境内之后,在该虚拟环境内驱动三维模型或者说在虚拟环境中播放三维模型的驱动动画。例如,可以用slam(simultaneouslocalizationandmapping,即时定位与地图构建)根据真实环境构建虚拟平面,将三维模型摆放在相机画面中环境的平面上,可以使得三维模型与真实环境融合得更自然。

除了通过在上述虚拟环境中驱动三维模型之外,也可以直接在获取到的周围真实环境中驱动三维模型或者在预设环境中驱动三维模型的驱动动画都可以。当选择在预设环境中播放三维模型驱动动画时,可以随时变更选中的预设环境。

本申请提供的三维模型驱动方法可适用于游戏、教育、直播、演唱会、视频通话、广告等场景。

请参阅图7,图7是本申请三维模型驱动装置实施例的结构示意图。如图7所示,本实施例的三维模型驱动装置70包括确定模块71和绑定模块72。

其中,确定模块71,用于确定三维模型的目标骨骼,目标骨骼从至少两个候选骨骼中得到。

绑定模块72,用于将目标骨骼与三维模型绑定,其中,目标骨骼用于驱动所述三维模型运动。

在一具体实施方式中,驱动装置70还可包括创建模块75,创建模块75用于将骨骼数据库中提供的不同动物体的所有部位的骨骼肢节进行组装,获得候选骨骼。骨骼肢节包括各个动物体的头盖骨、椎骨、尾骨、胸骨等等。将这些不同部位的骨骼肢节进行组装获得一个新的候选骨骼。

在一具体实施方式中,确定模块71从至少两个候选骨骼中确定与三维模型的骨骼结构相匹配的目标骨骼。其中,与三维模型的骨骼结构相匹配的目标骨骼可以是骨骼数据库中任意一个骨骼,并不限定为与三维模型的骨骼结构匹配度最高的候选骨骼为目标骨骼。

当确定模块71确定与三维模型匹配的目标骨骼之后,确定模块71按照预设规则对三维模型的骨骼结构与目标骨骼的匹配度进行评估,并在终端界面上显示评估结果;接收根据评估结果输入的选择指令,选择指令用于指示是否将目标骨骼与三维模型进行绑定。当接收到用户输入的确定选择指令之后,终端可以将目标骨骼与三维模型进行绑定,如果接收到用户输入的返回选择指令后,终端将目标骨骼放回骨骼数据库中。由用户重新在候选骨骼中选择目标骨骼。

预设规则可以是确定模块71根据三维模型的骨骼结构与目标骨骼的骨骼点进行匹配,根据骨骼点匹配程度对匹配度进行评估。其中,可以显示具体的匹配度数值,还可在此基础上显示当三维模型与该目标骨骼绑定之后的三维模型的运动速度及初步的驱动状态。在显示评估的结果之后,用户可根据评估结果决定是否需要进行绑定,如果匹配度不高,但终端仍然接收到匹配指令时,终端将会强制将目标骨骼与三维模型进行绑定。

其中,确定模块71还可根据三维模型的形态来确定目标骨骼。具体地,确定三维模型在第一形态下的第一目标骨骼或第二形态下的第二目标骨骼。第一形态与第二形态属于不同的运动形态;或,第一形态、第二形态中的一个是静止形态,另外一个是运动形态;运动形态包括跳动形态、走路形态、飞行形态、爬行形态中的一个。

例如,第一形态为双脚走路的形态,可绑定人形骨骼或者猩猩之类的骨骼,第二形态可以是飞行的形态,此时可以绑定四脚飞行动物的目标骨骼。

因此,确定模块71根据三维模型的不同形态确定目标骨骼,当根据三维模型的第一形态确定一个目标骨骼之后,如果三维模型的形态需要改变,则需要先将绑定的第一目标骨骼进行解绑。例如,第一形态为双脚走路的形态要转变为第二形态,如,飞行的形态,那么第一形态可以绑定人形的骨骼,在将人形骨骼解绑之后,第二形态可绑定四脚飞行动物的骨骼。因此,根据本申请的方法还能为一个三维模型的不同形态绑定不同的目标骨骼。

确定模块71在确定三维模型的目标骨骼过程中,首先,解析三维模型文件,获取三维模型的网格顶点位置信息,利用三维模型的网格顶点位置信息计算出三维模型的骨骼结构,并对计算得出的骨骼结构进行装配获得完整的骨骼结构。接着,确定模块71在骨骼数据库中匹配三维模型的骨骼结构进而得到目标骨骼。因此,通过计算三维模型的网格顶点信息获得三维模型的骨骼结构可以方便从候选骨骼中确定与三维模型对应的目标骨骼。

具体地,确定模块71将装配后的完整的骨骼结构,从至少两个候选骨骼中得到目标骨骼。本实施例中通过接收用户点击候选骨骼的指令,响应点击指令将点击指令对应的候选骨骼作为目标骨骼。在这种情况下就可以在终端界面上显示三维模型与目标骨骼的匹配度评估结果,供用户参考。

因此,在确定目标骨骼之后,确定模块71还能按照预设规则对三维模型的骨骼结构与目标骨骼的匹配度进行评估,通过提供这个匹配度评价的结果,用户可以根据这个结果决定是否继续绑定三维模型和这个目标骨骼,使得三维模型和匹配度高的目标骨骼绑定之后的驱动更自然。

在其他实施例中,确定模块71还可在骨骼数据库中按照预设的方式同各个候选骨骼进行匹配,得到目标骨骼。这里预设的方式可以是按照获取三维模型的骨骼结构的特征数据与骨骼数据库中各个候选骨骼的特征数据进行匹配,查找满足与三维模型的骨骼结构的特征数据匹配度的候选骨骼,这个匹配度的大小可以由用户自定义或者由系统默认,找出符合条件的候选骨骼之后,将符合条件的候选骨骼显示在终端界面上,由用户选择用于匹配的目标骨骼或用户在预设时间内未选择时,由系统默认匹配度最高的候选骨骼作为三维模型的目标骨骼。此时,特征数据可以是候选骨骼或骨骼结构的各级骨骼点特征,包括主要骨骼点数量以及主要骨骼点相互之间的位置关系。

选定目标骨骼之后,绑定模块72将三维模型对准目标骨骼,作为骨骼绑定的标准位姿。之后,绑定模块72计算三维模型的各个网格顶点与目标骨骼的骨骼点的相对关系。相对关系包括各个网格顶点与目标骨骼的骨骼点的对应关系、以及参考距离、角度等相对关系。利用计算得出的相对关系,即网格顶点与目标骨骼的骨骼点的对应关系、以及参考距离、角度等相对关系,设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系,从而通过骨骼点的位移或旋转角度来控制与之对应的网格顶点移动,然后通过这些与骨骼点对应的网格顶点移动,进而带动其他网格顶点移动。从而认为目标骨骼与三维模型绑定,即可利用目标骨骼驱动三维模型。所谓的动态相对关系指的是各个网格顶点随着骨骼点的移动,会如何移动。例如,当一个骨骼点从a位置移动到b位置时,与之对应的网格顶点会随着从c位置移动到d位置,并带动未与骨骼点绑定的网格点一起相对移动,其中c位置与a位置对应,d位置与b位置对应。即通过设置这种动态相对关系可以知道三维模型在运动过程中是怎样随着目标骨骼的运动而运动的,使得三维模型具有目标骨骼的形态。因此,将三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系设置之后,使得驱动三维模型时三维模型的动作更加流畅。

例如,如果不设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系,那么当目标骨骼的骨骼点移动时,三维模型的网格顶点可能会相对机械的移动到对应的位置,整个驱动过程中,就像牵动木偶的关节移动那样,只是几个点机械性地移动,如果设置了三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系之后,在骨骼点移动过程中还能带动未与骨骼点绑定的网格顶点随之相对移动,从而整个驱动三维模型的动作更加流畅。

一实施例中,将第一目标骨骼与三维模型进行绑定之后,使得三维模型通过第一目标骨骼进行驱动,无论三维模型是否已经绑定第一形态下的第一目标骨骼,当三维模型的形态需要状态为第二形态时,都是需要继续用计算得出的三维模型的骨骼结构从至少两个候选骨骼中进行匹配,进而得到第二目标骨骼。绑定第二目标骨骼的过程之前需要先将第一目标骨骼与三维模型解绑,并将第二目标骨骼与三维模型绑定,使得三卧模型不再根据第一目标骨骼进行驱动,而是根据第二目标骨骼进行驱动。

通过从至少两个候选骨骼中得到与三维模型匹配的目标骨骼,使得一个三维模型可绑定的目标骨骼的选择性更多。

通过根据三维模型的不同形态确定需要绑定的目标骨骼,方便用户根据三维模型不同形态挑选需要绑定目标骨骼,从而解决每一三维模型不管处于什么形态只能设置一种目标骨骼的问题。

进一步,驱动装置70包括驱动模块73,驱动模块73用于在绑定模块72将目标骨骼与三维模型绑定之后,通过摄像头采集包含目标物体的图像,其中,三维模型为目标物体对应的虚拟模型。具体地,开启摄像头,采集位于相机平面中的人体、动物体或虚拟模型的图像。此时,获取人体、动物体或虚拟模型的图像,并根据图像获取目标物体的运动参数,即获取人体、动物体或虚拟模型的骨骼点的运动参数,这里的骨骼点并不是人体、动物体或虚拟模型的全部骨骼点,而是其骨骼关键点,例如各大关节点。根据运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动驱动三维模型运动。

具体地,驱动模块73将获取到的人体、动物体或虚拟模型的骨骼点对应到与三维模型绑定的第一目标骨骼或第二目标骨骼的各个骨骼点上,使得人体、动物体或虚拟模型的骨骼点与三维模型绑定的目标骨骼的骨骼点形成对应的关系。

当形成这种对应关系之后,通过摄像头对人体、动物体或虚拟模型进实时骨骼检测,可以获取人体、动物体或虚拟模型的骨骼点的运动参数。除此之外,还可以获取旋转过程中,各个骨骼关键点的四元素信息,四元素信息即各个骨骼关键点在三维空间上的旋转及定向信息。目标骨骼的骨骼点的运动参数与检测到的人体、动物体或虚拟物体的骨骼点的运动轨迹是相对应的,即通过对人体、动物体或虚拟物体的实时骨骼检测,可以实时获取人体、动物体或虚拟模型的3d位姿,并作为驱动模型的输入信息,使得三维模型与该人体、动物体或虚拟模型的动作一致。从而能够实现利用目标物体实时驱动三维模型,通过实体进行实时驱动可以在应用层上实现实时驱动三维模型效果,不需要预先设置各个目标骨骼的动画且骨骼动作更加多样。

因此,在绑定目标骨骼之后,驱动模块73通过摄像头实时获取目标物体的运动参数来驱动目标骨骼的骨骼点移动,从而驱动三维模型运动。通过实时驱动三维模型可以使得驱动的动作更多样,三维模型的动作更丰富。

驱动模块73除了利用目标物体进行实时驱动三维模型之外,还可以通过获取预设的运动参数,预设的运动参数可以是真实录制的人体、动物体或虚拟模型的预设动画中骨骼点的运动参数,预设动画可以是在终端上绘制的骨骼动画,系统自带的骨骼动画或者用户自行在网上下载的骨骼动画等等。驱动模块73获取预设的运动参数之后,根据预设的运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动进而驱动三维模型运动。从而可以获得三维模型的驱动动画。

通过驱动模块73获取预设的运动参数来驱动三维模型的方式可以在找不到合适的目标物体进行驱动时使用,获取预设的运动参数来驱动三维模型的方式和实时目标物体骨骼驱动方式结合可以适用更多变更复杂的环境,使得驱动三维模型更加方便。

驱动装置70包括辅助驱动模块74,辅助驱动模块74用于在虚拟环境中驱动三维模型,通过摄像头获取周围环境数据,并参照环境数据构建虚拟环境,将与目标骨骼绑定的三维模型放置于虚拟环境中,以使得在虚拟环境中驱动与目标骨骼绑定的三维模型。具体地,开启摄像头,在正常拍摄模式下或其他模式下获取周围环境数据,例如,环境数据可以是周围环境中有那些物体,物体外在形象以及各个物体的相对位置关系等等,参照这些环境数据构建虚拟环境,也就是可以用虚拟的物体代替获取到的周围环境中真实的这些物体并且虚拟物体的外在形象以及他们的相对位置关系同真实环境中的一致或允许存在一定的相对误差,相对误差的大小可以由用户自行设置。其中,参照环境数据实时构建虚拟环境是实时进行的,即获取周围环境数据也是实时获取的。通过虚拟物体其实是重现真实环境的一个过程。辅助驱动模块74在构建了虚拟环境之后将与目标骨骼绑定的三维模型放置于相机画面中的虚拟环境内之后,在该虚拟环境内驱动三维模型或者说在虚拟环境中播放三维模型的驱动动画。例如,可以用slam(simultaneouslocalizationandmapping,即时定位与地图构建)根据真实环境构建虚拟平面,将三维模型摆放在相机画面中环境的平面上,可以使得三维模型与真实环境融合得更自然。

辅助驱动模块74除了通过在上述虚拟环境中驱动三维模型之外,也可以直接在获取到的周围真实环境中驱动三维模型或者在预设环境中驱动三维模型的驱动动画都可以。当选择在预设环境中播放三维模型驱动动画时,可以随时变更选中的预设环境。

本申请提供的三维模型驱动装置70可适用于游戏、教育、直播、演唱会、视频通话、广告等场景。

请参阅图8,图8是本申请三维模型驱动终端实施例的结构示意图。如图8所示,本实施例的三维模型驱动终端80包括存储器81和处理器82。处理器82耦接存储器81,用于执行三维模型驱动方法。

其中,存储器81内存储有各种形态的候选骨骼、不同动物体的所有部位的骨骼肢节进行组装获得所述虚拟模型骨骼。骨骼肢节包括各个动物体的头盖骨、椎骨、尾骨、胸骨等等,以及存储有程序指令,该程序指令被执行时可以实现三维模型驱动方法。其中,候选骨骼包括人类骨骼、动物骨骼和虚拟模型骨骼。虚拟模型骨骼包括任意形态的骨骼。

处理器82和存储器81耦接,有利于处理器82执行存储器81里面的程序以实现三维模型驱动方法。

处理器82接收组装骨骼肢节的指令,将选中的骨骼肢节进行组装获得新的候选骨骼。

处理器82可用于解析三维模型文件,获得三维模型的网格顶点位置信息,并且利用三维模型的网格顶点位置信息计算出三维模型的骨骼结构,对计算得出的骨骼结构进行装配获得完整的骨骼结构。

处理器82用于从至少两个候选骨骼中确定与三维模型的骨骼结构相匹配的目标骨骼。具体地,处理器82接收用户的点击对候选骨骼的点击指令,响应点击指令从骨骼数据库中选取目标骨骼。选取目标骨骼之后,,处理器82按照预设规则对三维模型的骨骼结构与目标骨骼的匹配度进行评估,并在终端80界面上显示评估结果;接收根据评估结果输入的选择指令,选择指令用于指示是否将目标骨骼与三维模型进行绑定。当接收到用户输入的确定选择指令之后,终端80可以将目标骨骼与三维模型进行绑定,如果接收到用户输入的返回选择指令后,终端80将目标骨骼放回骨骼数据库中。由用户重新在候选骨骼中选择目标骨骼。

预设规则可以是处理器82根据三维模型的骨骼结构与目标骨骼的骨骼点进行匹配,根据骨骼点匹配程度对匹配度进行评估。其中,可以显示具体的匹配度数值,还可在此基础上显示当三维模型与该目标骨骼绑定之后的三维模型的运动速度及初步的驱动状态。在显示评估的结果之后,用户可根据评估结果决定是否需要进行绑定,如果匹配度不高,但终端80仍然接收到匹配指令时,终端80将会强制将目标骨骼与三维模型进行绑定。

在终端80的其他实施方式中,处理器82将装配后的完整的骨骼结构骨骼数据库中按照预设的方式同各个目标骨骼进行匹配,得到第一目标骨骼。这里预设的方式可以是处理器82按照获取三维模型的骨骼结构的特征数据与骨骼数据库中各个目标骨骼的特征数据进行匹配,查找满足与三维模型的骨骼结构的特征数据匹配度的目标骨骼,这个匹配度的大小可以由用户自定义或者由系统默认。找出符合条件的目标骨骼之后,将符合条件的目标骨骼显示在三维模型驱动终端80界面上,由用户选择用于匹配的目标骨骼或用户在预设时间内为选择时,由系统默认匹配度最高的目标骨骼作为三维模型在第一状态下的第一目标骨骼或三维模型在第二状态下的第二目标骨骼。此时,特征数据可以是目标骨骼或骨骼结构的各级骨骼点特征,包括主要骨骼点数量以及主要骨骼点的位置关系。

处理器82可用于计算三维模型的网格顶点与目标骨骼的骨骼点的相对关系。这里的相对关系包括各个网格顶点与目标骨骼的骨骼点的对应关系、以及参考距离、角度等相对关系。利用计算得出的相对关系,设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系。即利用网格顶点与目标骨骼的骨骼点的对应关系、以及参考距离、角度等相对关系,设置三维模型的网格顶点与目标骨骼的骨骼点的动态相对关系,从而通过骨骼点的位移或旋转角度来控制与之对应的网格顶点移动,然后通过这些与骨骼点对应的网格顶点移动,进而带动其他网格顶点移动,从而认为目标骨骼与三维模型绑定,即可利用目标骨骼驱动三维模型。所谓的动态相对关系指的是各个网格顶点随着骨骼点的移动,会如何移动。例如,当一个骨骼点从a位置移动到b位置时,与之对应的网格顶点会随着从c位置移动到d位置,并带动未与骨骼点绑定的网格点一起相对移动,其中c位置与a位置对应,d位置与b位置对应。即通过设置这种动态相对关系可以知道三维模型在运动过程中是怎样随着目标骨骼的运动而运动的,使得三维模型具有目标骨骼的形态。

其中,处理器82可根据三维模型的形态来确定目标骨骼。具体地,处理器82确定三维模型在第一形态下的第一目标骨骼或第二形态下的第二目标骨骼。第一形态与第二形态属于不同的运动形态;或,第一形态、第二形态中的一个是静止形态,另外一个是运动形态;运动形态包括跳动形态、走路形态、飞行形态、爬行形态中的一个。

例如,第一形态为双脚走路的形态,可绑定人形骨骼或者猩猩之类的骨骼,第二形态可以是飞行的形态,此时可以绑定四脚飞行动物的目标骨骼。

通过处理器82先确定三维模型在第一形态下或第二形态下的第一目标骨骼或第二目标骨骼,然后再将第一目标骨骼或第二目标骨骼与三维模型进行绑定,其实是根据三维模型的不同形态确定需要绑定的目标骨骼,方便用户根据三维模型不同形态挑选需要绑定目标骨骼。当处理器82已经为三维模型绑定第一目标骨骼后,如果三维模型从第一形态切换到第二形态,此时可以重新确定三维模型在第二状态下的目标骨骼,确定方法如前所述,绑定第二目标骨骼之前需要先将第一目标骨骼与三维模型进行解绑。此时,第一目标骨骼对该三维模型不起作用,三维模型通过第二目标骨骼进行驱动,根据三维模型的形态变换绑定的目标骨骼很方便。

处理器82在将目标骨骼与三维模型绑定之后,通过摄像头采集包含目标物体的图像,其中,三维模型为目标物体对应的虚拟模型。具体地,处理器82开启摄像头,实时采集位于相机平面中的人体、动物体或虚拟模型的图像,即当打开摄像头之后,相机平面上可能会出现人体、动物体或虚拟模型。此时,处理器82获取人体、动物体或虚拟模型的图像,并根据图像获取目标物体的运动参数,即处理器82获取人体、动物体或虚拟模型的骨骼点的运动参数,这里的骨骼点并不是人体、动物体或虚拟模型的全部骨骼点,而是其骨骼关键点,例如各大关节点。根据运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动驱动三维模型运动。

具体地,处理器82将获取到的人体、动物体或虚拟模型的骨骼点对应到与三维模型绑定的第一目标骨骼或第二目标骨骼的各个骨骼点上,使得人体、动物体或虚拟模型的骨骼点与三维模型绑定的目标骨骼的骨骼点形成对应的关系。

当形成这种对应关系之后,处理器82通过摄像头对人体、动物体或虚拟模型进实时骨骼检测,可以获取人体、动物体或虚拟模型的骨骼点的运动参数。除此之外,处理器82还可以获取旋转过程中,各个骨骼关键点的四元素信息,四元素信息即各个骨骼关键点在三维空间上的旋转及定向信息。目标骨骼的骨骼点的运动参数与检测到的人体、动物体或虚拟物体的骨骼点的运动轨迹是相对应的,即通过对人体、动物体或虚拟物体的实时骨骼检测,可以实时获取人体、动物体或虚拟模型的3d位姿,并作为驱动模型的输入信息,使得三维模型与该人体、动物体或虚拟模型的动作一致。从而能够实现利用目标物体实时驱动三维模型,通过实体进行实时驱动可以在应用层上实现实时驱动三维模型效果,不需要预先设置各个目标骨骼的动画且骨骼动作更加多样。

另一实施例中,处理器82通过获取预设的运动参数,预设的运动参数可以是真实录制的人体、动物体或虚拟模型的预设动画中骨骼点的运动参数,预设动画可以是在终端80上绘制的骨骼动画,系统自带的骨骼动画或者用户自行在网上下载的骨骼动画等等。获取预设的运动参数之后,处理器82根据预设的运动参数驱动目标骨骼的骨骼点移动,以通过骨骼点的移动进而驱动三维模型运动。从而可以获得三维模型的驱动动画。

通过处理器82获取预设的运动参数来驱动三维模型的方式可以在找不到合适的目标物体进行驱动时使用,获取预设的运动参数来驱动三维模型的方式和实时目标物体骨骼驱动方式结合可以适用更多变更复杂的环境,使得驱动三维模型更加方便。

在获得三维模型的驱动动画之后,处理器82可控制在虚拟环境中播放驱动动画。通过摄像头获取周围环境数据,并参照环境数据构建虚拟环境,处理器82将与目标骨骼绑定的三维模型放置于虚拟环境中,以使得在虚拟环境中驱动与目标骨骼绑定的三维模型。具体地,处理器82开启摄像头,在正常拍摄模式下或其他模式下获取周围环境数据,例如,环境数据可以是周围环境中有那些物体,物体外在形象以及各个物体的相对位置关系等等,参照这些环境数据构建虚拟环境,也就是可以用虚拟的物体代替获取到的周围环境中真实的这些物体并且虚拟物体的外在形象以及他们的相对位置关系同真实环境中的一致或允许存在一定的相对误差,相对误差的大小可以由用户自行设置。其中,处理器82参照环境数据实时构建虚拟环境是实时进行的,即获取周围环境数据也是实时获取的。通过虚拟物体其实是重现真实环境的一个过程。在构建了虚拟环境之后处理器82将与目标骨骼绑定的三维模型放置于相机画面中的虚拟环境内,之后,在该虚拟环境内驱动三维模型或者说在虚拟环境中播放三维模型的驱动动画。例如,可以用slam(simultaneouslocalizationandmapping,即时定位与地图构建)根据真实环境构建虚拟平面,将三维模型摆放在相机画面中环境的平面上,可以使得三维模型与真实环境融合得更自然。

在其他实施例中,处理器82可直接控制在获取到的周围真实环境中播放三维模型的驱动动画或者在预设环境中播放三维模型的驱动动画都可以。

本申请提供的三维模型驱动终端80可适用于游戏、教育、直播、演唱会、视频通话、广告等场景。

本申请还提供一种计算机可读存储介质的实施例,计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现三维模型驱动方法。

本申请实施例还提供计算机可读存储介质。计算机可读存储介质可以包括例如硬盘、随机存取存储器(ram)、只读存储器(rom)、分布式计算系统的存储器、光盘(诸如压缩光盘(cd)、数字通用光盘(dvd)或蓝光光盘(bd)tm)、闪存设备以及存储卡等中的一者或更多。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

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