具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对装置、模块或单元进行区分,并非用于限定这些装置、模块或单元一定为不同的装置、模块或单元,也并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
下面以具体地实施例对本公开的技术方案以及本公开的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开的实施例进行描述。
本公开技术方案可以应用在涉及动态流体效果制作、应用以及使用等的应用程序中。本公开的技术方案可以应用在终端设备中,终端设备可以包括移动终端或者计算机设备,其中,移动终端可以包括例如智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备等等;计算机设备可以包括例如台式机、笔记本电脑、一体机、智能电视等。通过本公开技术方案对第一物体和流体在三维空间中进行建模,将物体模型和流体模型渲染之后的效果图像在二维的用户显示界面中进行显示(为简明起见,在下文中,将用户显示界面中显示的第一物体的模型渲染效果图像简称为“第一物体”,类似地,将用户显示界面中显示的流体的模型渲染效果图像简称为“流体”),第一物体在界面中可以与流体接触,例如,第一物体中盛载有流体,当第一物体受到外力进行运动时,其中盛载的流体随之发生运动,当第一物体和流体发生碰撞时,可以在用户显示界面中动态展示流体的运动变化。又例如,流体在第一物体的外部,当流体受到外力作用运动时,流体和第一物体发生碰撞,并在用户显示界面中动态展示流体的运动变化。本领域技术人员应当理解的是,本公开不对第一物体和流体的位置以及运动情况进行限定。
图1为本公开实施例提供的一种交互式动态流体效果处理方法的流程示意图,如图1所示,该方法可以包括:
步骤S101,采集视频,并检测视频中的目标对象的位姿变化。
具体的,当检测到视频采集指令时,终端设备可以启动终端设备的视频采集装置(例如,摄像头)采集视频。视频采集的持续时间可以是预设时间段,也可以根据视频采集开始指令和视频采集结束指令来确定视频采集的持续时间,本公开不对此进行限制。采集到视频之后,终端设备在采集到的视频中检测目标对象,其中,目标对象可以是视频中的特定对象,包括但不限于:人的脸部、人的头部、人的手部等。可选地,当目标对象为人的脸时,可以通过人脸检测算法来检测视频中的各帧图像中的人脸;当目标对象为人的头部时,可以通过头部检测算法来检测视频中的各帧图像中的人的头部。
检测目标对象的位姿变化具体可以包括检测目标对象中的关键点的位姿变化,并根据关键点的位姿变化来确定目标对象的位姿变化。
在一个实施例中,以目标对象为人脸为例,关键点可以包括人脸的中心点,则终端设备在采集的视频的各帧图像中检测人脸的中心点的位姿变化,并根据人脸的中心点的位姿变化,来确定人脸的位姿变化。
步骤S102,获取目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系。
其中,用户显示界面可以为应用程序中的一个显示界面,本公开实施例所提供的方案例如可以实现为一个应用程序或者应用程序的一个功能插件,当终端设备检测到用户针对应用程序的启动指令时,启动应用程序,展示用户显示界面;或者,当终端设备检测到用户针对应用程序的该功能插件的触发指令(如点击虚拟按钮)时,展示用户显示界面,其中,用户显示界面中还可以显示有第一物体和流体的图像。在一个实施例中,终端设备可以通过对第一物体和流体在三维空间中进行建模,并将物体模型和流体模型渲染之后的效果图像投影在二维的用户显示界面中,从而在用户显示界面中显示第一物体以及流体。
其中,第一物体可以是运动中和受到力的作用后,形状和体积都相对稳定的物体,例如,刚体、软体等。第一物体在界面中可以与流体接触,例如,流体可以盛载在第一物体中,当第一物体进行运动时,其中盛载的流体随之发生运动,并在用户显示界面中呈现动态效果。
具体的,终端设备从视频中检测出目标对象,并获取预先配置的目标对象和用户显示界面中显示的第一物体对应的物体模型之间的位姿映射关系。由于第一物体在用户显示界面中的显示位置与目标对象在用户显示界面中的位置相关,因此,当目标对象发生位姿变化时,第一物体也发生位姿变换。并且,终端设备根据该位姿映射关系确定物体模型的位姿变化,从而在用户显示界面中呈现出目标对象运动并且第一物体也随着目标对象而运动的效果。
步骤S103,根据目标对象的位姿变化以及位姿映射关系,确定物体模型的位姿变化。
由于第一物体在用户显示界面中的显示位置与目标对象在用户显示界面中的位置相关,并且目标对象和物体模型之间预先配置了位姿映射关系,因此,终端设备根据目标对象的位姿变化以及位姿映射关系,可以确定出物体模型的位姿变化。其中,位姿变化可以包括位姿的变化量,也可以是变化后的位姿。
步骤S104,根据物体模型的位姿变化,调整用户显示界面中显示的流体的位置,并在用户显示界面动态展示流体的运动变化。
以第一物体中盛载有流体为例进行说明,当目标对象发生位姿变化时,由于第一物体在用户显示界面中的显示位置与目标对象在用户显示界面中的位置相关,相应地,第一物体也发生位姿变化,并带动流体运动,流体受到外力作用,流体的位置也会发生变化。终端设备可以根据第一物体的位姿变化,来调整用户显示界面中的流体的位置,并在用户显示界面中展示第一物体的物体模型带动流体运动的动态效果。
在一个实施例中,以目标对象为人脸为例,根据人脸的位姿变化,相应地,第一物体也发生位姿变化,第一物体中承载有流体,第一物体的位姿变化使内部承载的流体受到外力作用,从而使流体的位置发生变化。终端设备可以根据人脸的位姿变化确定第一物体的位姿变化,并进一步根据第一物体的位姿变化,来调整流体的位置,在用户显示界面中展示流体运动的动态效果。
终端设备在用户显示界面中显示第一物体时,具体的显示位置的确定可以通过如下实施例实现。
在一种可能的实现方式中,包括:
接收用户针对用户显示界面的显示触发操作;
显示用户显示界面,并开启视频采集装置采集视频;
检测视频中的目标对象,并获取检测到的目标对象在用户显示界面中的位置;
根据目标对象在用户显示界面中的位置,确定第一物体在用户显示界面中的初始显示位置;
根据所述初始显示位置,在用户显示界面中显示第一物体。
在实际应用中,终端设备在初始进行视频采集时,根据用户针对用户显示界面的显示触发操作显示用户显示界面,并开启视频采集装置采集视频,终端设备可以根据目标对象与第一物体之间的位置关联关系,在确定目标对象的初始显示位置后,确定第一物体在用户显示界面中的初始显示位置,并根据该初始显示位置,在用户显示界面中显示第一物体。此外,终端设备还可以在显示第一物体的同时显示流体,例如,终端设备可以在用户显示界面中显示第一物体中盛装有流体。在另一个实施例中,终端设备还可以在显示第一物体之后显示流体,例如,在用户显示界面中显示流体注入至第一物体的动态效果。本公开不对第一物体和流体的显示顺序和具体显示方式进行限制。
其中,该位置关联关系可以包括中心点重合,终端设备在用户显示界面中将目标对象的中心点位置与第一物体的中心点位置重合显示。例如,仍以流体被盛载在第一物体中为例进行说明,终端设备可以将目标对象的中心点位置和盛装流体的第一物体的中心点位置相关联,将目标对象和盛装流体的第一物体按照中心点重合的方式在用户显示界面中进行显示。在另一个实施例中,位置关联关系还可以包括目标对象的中心点位置和第一物体的中心点位置保持特定距离d,终端设备在用户显示界面中将目标对象的中心点位置与第一物体的中心点位置保持特定距离d进行显示,例如,终端设备根据目标对象的中心点的位置和特定距离d,能够确定第一物体的中心点位置,并根据该位置在用户显示界面中显示第一物体。
在一个实施例中,可以是根据第一物体的特征信息(例如,尺寸、形状、颜色等),在三维空间中对第一物体进行建模得到的第一物体的物体模型。
在一种可能的实现方式中,针对步骤S101中的检测视频中的目标对象的位姿变化,可以包括:
检测视频中的目标对象的位姿的变化量。
进一步地,步骤S103可以包括:
根据目标对象的位姿的变化量以及位姿映射关系,确定第一物体对应的物体模型的位姿的变化量。
从而,根据物体模型的位姿变化,调整用户显示界面中显示的流体的位置,可以包括:
根据物体模型的位姿的变化量,调整用户显示界面中显示的流体的位置。
在实际应用中,终端设备可以检测目标对象的位姿的变化量,根据目标对象的位姿的变化量以及目标对象和物体模型的位姿映射关系,确定物体模型的位姿的变化量,根据物体模型的位姿的变化量,确定物体模型发生位姿变化后的位姿,根据物体模型变化后的位姿,调整用户显示界面中显示的流体的位置。
本公开实施例中,根据目标对象的位姿的变化量,可以确定第一物体对应的物体模型的位姿的变化量,根据物体模型的位姿的变化量,调整流体的位置,可以使调整后的流体的位置更加准确,呈现更好的动态效果。
在一种可能的实现方式中,步骤S101中的检测视频中的目标对象的位姿的变化量,包括:检测视频中的目标对象的位置的变化量和姿态的变化量。其中,位姿映射关系包括目标对象的位置的变化量和物体模型位置的变化量的第一映射关系,以及目标对象的姿态的变化量和物体模型的姿态的变化量的第二映射关系。
并且,步骤根据目标对象的位姿的变化量以及位姿映射关系,确定物体模型的位姿的变化量,可以包括:
根据目标对象的位置的变化量和第一映射关系,确定物体模型的位置的变化量;以及
根据目标对象的姿态的变化量和第二映射关系,确定物体模型的姿态信息的变化量。
在实际应用中,位姿可以包括位置和姿态。终端设备可以根据在视频中检测出的目标对象的二维图像,确定目标对象在三维空间中的位置和姿态。其中,目标对象的姿态可以是目标对象在x轴、y轴、z轴三个方向的旋转角,分别可以称为方位角、俯仰角和翻滚角。终端设备可以根据目标对象的二维图像,估计出目标对象在三维空间中的位姿,例如,可以通过头部姿态估计(Head Pose Estimation)算法,根据人脸图像,估计出人头部的姿态。目标对象的位置可以是根据目标对象在二维图像的位置确定出的目标对象在三维空间中的位置坐标或位置向量。终端设备可以针对目标对象在三维空间中的位置的变化量和第一物体对应的物体模型的位置的变化量建立第一映射关系,针对估计出的目标对象在三维空间中的姿态的变化量和物体模型的姿态的变化量建立第二映射关系,并分别根据目标对象的位置的变化量和姿态的变化量,确定出物体模型的位置的变化量以及物体模型的姿态的变化量。
在一示例中,可以根据估计出的目标对象在三维空间中的位置的变化量和姿态的变化量,确定第一物体在三维空间中的物体模型的位置的变化量和姿态的变化量:
Δps=ωΔpf (1)
Δqs=Δqf (2)
其中,Δpf表示目标对象在三维空间中的位置的变化量,Δps表示第一物体对应的物体模型在三维空间中的位置的变化量,ω表示比例参数,可以为预设的值,可用于调节三维空间中物体模型运动的速度;Δqf表示目标对象在三维空间中的姿态的变化量,Δqs表示物体模型在三维空间中的姿态的变化量。其中,公式(1)可以作为第一映射关系,公式(2)可以作为第二映射关系。
本公开实施例中,根据目标对象的位置的变化量和姿态的变化量,可以确定物体模型的位置的变化量和姿态的变化量,使得可以在用户显示界面中呈现物体模型随着目标对象的运动而运动的动态效果。
在一种可能的实现方式中,步骤S104中的根据物体模型的位姿的变化量,调整用户显示界面中显示的流体的位置,包括:
根据物体模型的位置的变化量,确定物体模型的各模型粒子的位置;以及
针对流体中的每个流体粒子,采取如下步骤:
获取各流体粒子的位置;
根据各模型粒子的位置和流体粒子的位置,确定与流体粒子发生碰撞的模型粒子;
根据与流体粒子发生碰撞的模型粒子的位置,调整流体粒子的位置。
在实际应用中,当第一物体在视频中随着目标对象的位姿变换而运动时,可以使得流体与该第一物体发生碰撞,终端设备可以根据物体模型的位置的变化量,确定物体模型变化后的位置,根据物体模型变化后的位置,确定物体模型中的各模型粒子的位置。具体的,可以通过三维建模软件(例如,3Dmax、Maya等),将第一物体对应的物体模型导出为点云数据,点云数据为点云格式(点云格式文件的后缀为.ply)的数据,每个点云数据对应一个点,每个点对应一个模型粒子,各点云数据可以包括各点在模型中的位置和法向信息,各法向信息可以指向物体模型的外部。
当第一物体发生运动时,其中盛载的流体随之发生运动,终端设备可以根据流体粒子受到的外力作用的大小,对流体的运动进行模拟,估计各流体粒子的运动后的位置,并得到估计位置,作为流体对应的各个流体粒子的位置。可选地,终端设备可以通过基于位置的流体(Position Based Fluids,PBF)模拟方式计算出各个流体粒子的估计位置。
当流体随着第一物体的运动而运动时,流体中的部分或者全部流体粒子可能会与模型粒子发生碰撞,对于与模型粒子发生碰撞的流体粒子,终端设备可以根据与流体粒子发生碰撞的模型粒子的位置,调整流体粒子的位置,并将调整后的位置作为流体粒子运动后在用户显示界面显示的位置,从而在用户显示界面动态展示流体的运动变化。
当流体与第一物体发生碰撞时,流体粒子附近分布模型粒子,对于每个流体粒子,根据该流体粒子的估计位置和每个模型粒子的位置,能够确定出哪些模型粒子与流体粒子发生碰撞,哪些模型粒子没有与流体粒子发生碰撞。
对于每个流体粒子,根据该流体粒子的位置和各模型粒子的位置,能够计算出流体粒子与各模型粒子之间的距离,根据该距离可以确定流体粒子的相邻模型粒子,终端设备可以将距离流体粒子最近的模型粒子作为流体粒子的相邻模型粒子。由于流体粒子的相邻模型粒子是最有可能和流体粒子发生碰撞的模型粒子,因此,若相邻模型粒子与流体粒子的距离小于预设距离,则相邻模型粒子为与流体粒子发生碰撞的模型粒子,从而终端设备得到与流体粒子发生碰撞的模型粒子的位置。
对于没有与模型粒子发生碰撞的流体粒子,终端设备对该流体粒子运动前的位置进行估计(例如,采用PBF算法)得到估计位置,并将估计位置作为流体粒子运动后在用户显示界面显示的位置。因此,用户显示界面中显示的这部分流体粒子的运动变化过程为:从运动前的位置移动到估计位置。
然后,如果目标对象没有继续发生位姿变化,流体在惯性作用下继续运动,终端设备可以根据流体粒子的当前位置,估计流体粒子在惯性作用下运动后的位置,模拟流体粒子的运动并在用户显示界面中进行显示。可选地,终端设备可以通过PBF的方式模拟流体粒子在惯性作用下的运动。
在一种可能的实现方式中,对于与模型粒子发生碰撞的每一流体粒子,根据与流体粒子发生碰撞的模型粒子的位置,调整流体粒子的位置,可以包括:
根据流体粒子的位置和与流体粒子发生碰撞的模型粒子的位置,确定流体粒子的位置修正量;
根据位置修正量,调整与模型粒子发生碰撞的流体粒子的位置,以在用户显示界面动态展示所述流体的运动变化。
在实际应用中,若流体的一部分或者全部流体粒子与物体模型发生了碰撞,则碰撞会改变这些流体粒子的位置,因此,这部分流体粒子的位置不再是对流体运动进行模拟时得到的估计位置,而是还需要对这些粒子的位置进行调整。针对每一与模型粒子发生碰撞的流体粒子,该流体粒子的位置、与该流体粒子发生碰撞的模型粒子的位置均可以为三维空间中的位置向量,终端设备计算这两个位置向量的差,根据这两个位置向量的差,确定流体粒子的位置修正量,并且,终端设备根据该位置修正量,对该发生碰撞的流体粒子的位置进行调整,并将调整后的位置作为该流体粒子碰撞后的位置,在用户显示界面中显示该流体粒子从运动前的位置对应的位置移动到调整后的位置对应位置,从而在用户显示界面中呈现流体的动态的变化效果。
在一种可能的实现方式中,根据流体粒子的位置和与流体粒子发生碰撞的模型粒子的位置,确定流体粒子的位置修正量,可以包括:
获取与流体粒子发生碰撞的模型粒子的法向信息;
获取与法向信息对应的第一权重、以及与流体粒子和与流体粒子发生碰撞的模型粒子之间的第一距离对应的第二权重;
基于第一距离、法向信息、第一权重、第二权重、以及预设距离r,确定流体粒子的位置修正量。
在实际应用中,终端设备将物体模型导出为点云数据,每个点云数据对应一个模型粒子,点云数据中包括各模型粒子在模型中的位置以及法向信息,各法向信息可以指向物体模型的外部。终端设备可以预先配置该第一权重和该第二权重,其中,第一权重可以为与流体粒子发生碰撞的模型粒子的法向信息对应的权重、第二权重可以为与流体粒子和与流体粒子发生碰撞的模型粒子之间的第一距离对应的权重,终端设备基于流体粒子和与流体粒子发生碰撞的模型粒子之间的第一距离、法向信息、第一权重、第二权重以及预设距离r,确定流体粒子的位置修正量。
在一个实施例中,通过将第一物体建模为物体模型,并将物体模型导出为点云数据,能够得到模型粒子在模型中(也可称为模型坐标系)的位置以及法向信息,为了计算流体粒子的位置修正量,终端设备可以对模型粒子的位置和法向信息进行坐标变换,变换到计算流体粒子位置修正量的坐标系(也可称为流体坐标系)中,可以通过如下公式(3)-(4)对模型粒子进行坐标变换:
Pω=RPm+T (3)
nω=Rnm (4)
其中,Pω表示各模型粒子在流体坐标系中的位置;Pm表示各模型粒子在模型坐标系中的位置;nω表示各模型粒子在流体坐标系中的法向量;nm表示各模型粒子在模型坐标系中的法向量;R表示旋转矩阵;T表示平移向量,R、T可以根据具体需要预先进行配置。
将模型粒子的位置和法向信息转换到流体坐标系之后,通过以下公式计算流体粒子的位置修正量:
Δp=(r-||d||)*abs(nω·d)*(-ω1nω+ω2d) (5)
d=p-x (6)
其中,Δp表示待计算的位置修正量,r表示预设距离,d表示流体粒子和与流体粒子发生碰撞的模型粒子在三维空间中的位置向量的差,||d||表示流体粒子与流体粒子发生碰撞的模型粒子在三维空间中的距离,p表示流体粒子位置的位置向量,x表示与流体粒子发生碰撞的模型粒子位置的位置向量;nω表示与流体粒子发生碰撞的模型粒子在流体坐标系下的法向量,ω1表示第一权重,ω2表示第二权重。通过采用上述公式(5)和(6),可以获取到与第一物体发生碰撞的流体粒子的流体粒子的位置修正量Δp。
在得到了与模型粒子发生碰撞的流体粒子的位置修正量之后,利用该位置修正量,通过下述公式对与模型粒子发生碰撞的流体粒子的位置进行调整:
pt+1=pt+Δp (7)
其中,pt表示位置调整前的流体粒子的位置(例如,通过PBF方法计算得到的估计位置),Δp表示位置修正量,pt+1表示位置调整后的流体粒子的位置,t表示位置调整前的位置对应的时刻,t+1表示位置调整后的位置对应的时刻。
基于上述本公开所提供的技术方案,下面以一个具体实施例对该技术方案进行阐释,该具体实施例及其内容仅是为了说明本公开方案的一种可能地实现方式,并不代表本公开方案的全部实现方式。
如图2所示,执行步骤S201,当终端设备检测到在用户显示界面的摄像头启动指令时,开启摄像头采集视频(如图中所示的相机捕捉画面);
执行步骤S202,检测视频中的目标对象的位姿变化,若目标对象为人脸,则检测人脸的位姿变化(如图中所示的“人脸检测”);
执行步骤S203,当人脸第一次出现在用户显示界面时(如图中所示的“第一次出现”),根据第一次检测到人脸在用户显示界面中的显示位置,确定第一物体在用户显示界面中的初始显示位置,并在第一物体中显示流体(例如,向第一物体中注入流体);
执行步骤S204,当人脸运动时,获取人脸的位姿的变化,根据人脸的位姿的变化量和位姿映射关系,确定第一物体的位姿的变化量(如图中所示的“计算第一物体的位姿变化量”),由于第一物体的运动也会带动第一物体中的流体一起运动,因此终端设备可以根据第一物体的位姿的变化量,调整第一物体中的流体的位置,并在用户显示界面动态展示流体的运动变化(如图中所示的“带动第一物体中的流体一起运动”)。
执行步骤S205,当人脸不动时,终端设备可以通过PBF的方式确定流体运动后的位置,模拟流体在惯性作用下继续运动的状态(如图中所示的“流体在惯性作用下继续流动”);
以上各步骤中,人脸的运动、第一物体的运动、流体的运动均在用户显示界面中进行显示,如图中所示的步骤S206,终端设备将图像输出到屏幕。
在本公开实施例提供的交互式动态流体效果处理方法,可以包括:采集视频,并检测视频中的目标对象的位姿变化;获取目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系;根据目标对象的位姿变化以及位姿映射关系,确定物体模型的位姿变化;根据物体模型的位姿变化,调整用户显示界面中显示的流体的位置,并在用户显示界面动态展示流体的运动变化。通过采用本公开提供的技术方案,根据采集到的视频中的目标对象的位姿变化,来控制用户显示界面中的物体和流体的运动变化,交互方式新颖、趣味性强,能够提升用户的体验。
基于与图1中所示方法相同的原理,本公开的实施例中还提供了一种交互式动态流体效果处理装置30,如图3所示,该交互式动态流体效果处理装置30可以包括:
采集模块31,用于采集视频,并检测视频中的目标对象的位姿变化;
获取模块32,用于获取目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系;
确定模块33,用于根据目标对象的位姿变化以及位姿映射关系,确定物体模型的位姿变化;
调整模块34,用于根据物体模型的位姿变化,调整用户显示界面中显示的流体的位置,并在用户显示界面动态展示流体的运动变化。
在一种可能的实现方式中,装置30还包括接收模块,用于:
接收用户针对用户显示界面的显示触发操作;
显示用户显示界面,并开启视频采集装置采集视频;
检测视频中的目标对象,并获取检测到的目标对象在用户显示界面中的位置;
根据目标对象在用户显示界面中的位置,确定第一物体在用户显示界面中的初始显示位置;
根据初始显示位置,在用户显示界面中显示第一物体。
在一种可能的实现方式中,采集模块31,具体用于:
检测视频中的目标对象的位姿的变化量;
确定模块33,具体用于:
根据目标对象的位姿的变化量以及位姿映射关系,确定物体模型的位姿的变化量;
调整模块34,具体用于:
根据物体模型的位姿的变化量,调整用户显示界面中显示的流体的位置。
在一种可能的实现方式中,采集模块31在检测视频中的目标对象的位姿的变化量时,用于:
检测视频中的目标对象的位置的变化量和姿态的变化量;
其中,位姿映射关系包括目标对象的位置的变化量和物体模型的位置的变化量的第一映射关系,以及目标对象的姿态的变化量和物体模型的姿态的变化量的第二映射关系。
在一种可能的实现方式中,确定模块33在根据目标对象的位姿的变化量以及位姿映射关系,确定物体模型的位姿的变化量时,用于:
根据目标对象的位置的变化量和第一映射关系,确定物体模型的位置的变化量;以及
根据目标对象的姿态的变化量和第二映射关系,确定物体模型的姿态的变化量。
在一种可能的实现方式中,调整模块34在根据物体模型的位姿的变化量,调整用户显示界面中显示的流体的位置时,用于:
根据物体模型的位置的变化量,确定物体模型的各模型粒子的位置;以及
针对流体中的每个流体粒子,执行如下方法:
获取流体粒子的位置;
根据各模型粒子的位置和流体粒子的位置,确定与流体粒子发生碰撞的模型粒子;
根据与流体粒子发生碰撞的模型粒子的位置,调整流体粒子的位置。
在一种可能的实现方式中,对于与模型粒子发生碰撞的每一流体粒子,调整模块34具体用于:
根据流体粒子的位置和与流体粒子发生碰撞的模型粒子的位置,确定流体粒子的位置修正量;
根据位置修正量,调整与模型粒子发生碰撞的流体粒子的位置,以在用户显示界面动态展示流体的运动变化。
在一种可能的实现方式中,调整模块34在根据流体粒子的位置和与流体粒子发生碰撞的模型粒子的位置,确定流体粒子的位置修正量时,用于:
获取与流体粒子发生碰撞的模型粒子的法向信息;
获取与法向信息对应的第一权重、以及与流体粒子和与流体粒子发生碰撞的模型粒子之间的第一距离对应的第二权重;
基于第一距离、法向信息、第一权重、第二权重、以及预设距离,确定流体粒子的位置修正量。
本公开实施例的交互式动态流体效果处理装置可执行本公开的实施例所提供的交互式动态流体效果处理方法,其实现原理相类似,本公开各实施例中的交互式动态流体效果处理装置中的各模块所执行的动作是与本公开各实施例中的交互式动态流体效果处理方法中的步骤相对应的,对于交互式动态流体效果处理装置的各模块的详细功能描述具体可以参见前文中所示的对应的交互式动态流体效果处理方法中的描述,此处不再赘述。
在本公开实施例提供的交互式动态流体效果处理装置,可以采集视频,并检测视频中的目标对象的位姿变化;获取目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系;根据目标对象的位姿变化以及位姿映射关系,确定物体模型的位姿变化;根据物体模型的位姿变化,调整用户显示界面中显示的流体的位置,并在用户显示界面动态展示流体的运动变化。通过采用本公开提供的技术方案,根据采集到的视频中的目标对象的位姿变化,来控制用户显示界面中的物体和流体的运动变化,交互方式新颖、趣味性强,能够提升用户的体验。
下面参考图4,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。本公开实施例技术方案的执行主体可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)、可穿戴电子设备等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
电子设备包括:存储器以及处理器,存储器用于存储执行上述各个方法实施例所述方法的程序;处理器被配置为执行存储器中存储的程序,以实现上文所述的本公开的实施例的功能以及/或者其它期望的功能。其中,这里的处理器可以称为下文所述的处理装置601,存储器可以包括下文中的只读存储器(ROM)602、随机访问存储器(RAM)603以及存储装置608中的至少一项,具体如下所示:
如图4所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序存储有执行上述各个实施例所述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:采集视频,并检测视频中的目标对象的位姿变化;获取目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系;根据目标对象的位姿变化以及位姿映射关系,确定物体模型的位姿变化;根据物体模型的位姿变化,调整用户显示界面中显示的流体的位置,并在用户显示界面动态展示流体的运动变化。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,本公开提供了一种交互式动态流体效果处理方法,所述方法包括:
采集视频,并检测视频中的目标对象的位姿变化;
获取所述目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系;
根据所述目标对象的位姿变化以及所述位姿映射关系,确定所述物体模型的位姿变化;
根据所述物体模型的位姿变化,调整所述用户显示界面中显示的流体的位置,并在所述用户显示界面动态展示所述流体的运动变化。
在一种可能的实现方式中,所述方法还包括:
接收用户针对所述用户显示界面的显示触发操作;
显示所述用户显示界面,并开启视频采集装置采集视频;
检测所述视频中的目标对象,并获取检测到的所述目标对象在所述用户显示界面中的位置;
根据所述目标对象在所述用户显示界面中的位置,确定所述第一物体在所述用户显示界面中的初始显示位置;
根据所述初始显示位置,在所述用户显示界面中显示所述第一物体。
在一种可能的实现方式中,所述检测视频中的目标对象的位姿变化,包括:
检测所述视频中的所述目标对象的位姿的变化量;
所述根据所述目标对象的位姿变化以及所述位姿映射关系,确定所述第一物体对应的物体模型的位姿变化,包括:
根据所述目标对象的位姿的变化量以及所述位姿映射关系,确定所述物体模型的位姿的变化量;
所述根据所述物体模型的位姿变化,调整所述用户显示界面中显示的流体的位置,包括:
根据所述物体模型的位姿的变化量,调整所述用户显示界面中显示的流体的位置。
在一种可能的实现方式中,所述检测视频中的目标对象的位姿的变化量,包括:
检测视频中的目标对象的位置的变化量和姿态的变化量;
其中,所述位姿映射关系包括所述目标对象的位置的变化量和所述物体模型的位置的变化量的第一映射关系,以及所述目标对象的姿态的变化量和所述物体模型的姿态的变化量的第二映射关系。
在一种可能的实现方式中,所述根据所述目标对象的位姿的变化量以及所述位姿映射关系,确定所述物体模型的位姿的变化量,包括:
根据所述目标对象的位置的变化量和所述第一映射关系,确定所述物体模型的位置的变化量;以及
根据所述目标对象的姿态的变化量和所述第二映射关系,确定所述物体模型的姿态的变化量。
在一种可能的实现方式中,所述根据所述物体模型的位姿的变化量,调整所述用户显示界面中显示的流体的位置,包括:
根据所述物体模型的位置的变化量,确定所述物体模型的各模型粒子的位置;以及
针对所述流体中的每个流体粒子,执行如下方法:
获取所述流体粒子的位置;
根据各所述模型粒子的位置和所述流体粒子的位置,确定与所述流体粒子发生碰撞的模型粒子;
根据与所述流体粒子发生碰撞的模型粒子的位置,调整所述流体粒子的位置。
在一种可能的实现方式中,对于与模型粒子发生碰撞的每一流体粒子,所述根据与所述流体粒子发生碰撞的模型粒子的位置,调整所述流体粒子的位置,包括:
根据所述流体粒子的位置和与所述流体粒子发生碰撞的模型粒子的位置,确定所述流体粒子的位置修正量;
根据所述位置修正量,调整与所述模型粒子发生碰撞的流体粒子的位置,以在所述用户显示界面动态展示所述流体的运动变化。
在一种可能的实现方式中,所述根据所述流体粒子的位置和与所述流体粒子发生碰撞的模型粒子的位置,确定所述流体粒子的位置修正量,包括:
获取与所述流体粒子发生碰撞的模型粒子的法向信息;
获取与所述法向信息对应的第一权重、以及与所述流体粒子和与所述流体粒子发生碰撞的模型粒子之间的第一距离对应的第二权重;
基于所述第一距离、所述法向信息、所述第一权重、所述第二权重、以及预设距离,确定所述流体粒子的位置修正量。
根据本公开的一个或多个实施例,本公开提供了一种交互式动态流体效果处理装置,所述装置包括:
采集模块,用于采集视频,并检测视频中的目标对象的位姿变化;
获取模块,用于获取所述目标对象与用户显示界面中显示的第一物体对应的物体模型的位姿映射关系;
确定模块,用于根据所述目标对象的位姿变化以及所述位姿映射关系,确定所述物体模型的位姿变化;
调整模块,用于根据所述物体模型的位姿变化,调整所述用户显示界面中显示的流体的位置,并在所述用户显示界面动态展示所述流体的运动变化。
在一种可能的实现方式中,所述装置还包括接收模块,用于:
接收用户针对所述用户显示界面的显示触发操作;
显示所述用户显示界面,并开启视频采集装置采集视频;
检测所述视频中的目标对象,并获取检测到的所述目标对象在所述用户显示界面中的位置;
根据所述目标对象在所述用户显示界面中的位置,确定所述第一物体在所述用户显示界面中的初始显示位置;
根据所述初始显示位置,在所述用户显示界面中显示所述第一物体。
在一种可能的实现方式中,所述采集模块,具体用于:
检测所述视频中的所述目标对象的位姿的变化量;
所述确定模块,具体用于:
根据所述目标对象的位姿的变化量以及所述位姿映射关系,确定所述物体模型的位姿的变化量;
所述调整模块,具体用于:
根据所述物体模型的位姿的变化量,调整所述用户显示界面中显示的流体的位置。
在一种可能的实现方式中,所述采集模块,在检测视频中的目标对象的位姿的变化量时,用于:
检测视频中的目标对象的位置的变化量和姿态的变化量;
其中,所述位姿映射关系包括所述目标对象的位置的变化量和所述物体模型的位置的变化量的第一映射关系,以及所述目标对象的姿态的变化量和所述物体模型的姿态的变化量的第二映射关系。
在一种可能的实现方式中,所述确定模块在根据所述目标对象的位姿的变化量以及所述位姿映射关系,确定所述物体模型的位姿的变化量时,用于:
根据所述目标对象的位置的变化量和所述第一映射关系,确定所述物体模型的位置的变化量;以及
根据所述目标对象的姿态的变化量和所述第二映射关系,确定所述物体模型的姿态的变化量。
在一种可能的实现方式中,所述调整模块在根据所述物体模型的位姿的变化量,调整所述用户显示界面中显示的流体的位置时,用于:
根据所述物体模型的位置的变化量,确定所述物体模型的各模型粒子的位置;以及
针对所述流体中的每个流体粒子,执行如下方法:
获取所述流体粒子的位置;
根据各所述模型粒子的位置和所述流体粒子的位置,确定与所述流体粒子发生碰撞的模型粒子;
根据与所述流体粒子发生碰撞的模型粒子的位置,调整所述流体粒子的位置。
在一种可能的实现方式中,对于与模型粒子发生碰撞的每一流体粒子,所述调整模块,具体用于:
根据所述流体粒子的位置和与所述流体粒子发生碰撞的模型粒子的位置,确定所述流体粒子的位置修正量;
根据所述位置修正量,调整与所述模型粒子发生碰撞的流体粒子的位置,以在所述用户显示界面动态展示所述流体的运动变化。
在一种可能的实现方式中,所述调整模块在根据所述流体粒子的位置和与所述流体粒子发生碰撞的模型粒子的位置,确定所述流体粒子的位置修正量时,用于:
获取与所述流体粒子发生碰撞的模型粒子的法向信息;
获取与所述法向信息对应的第一权重、以及与所述流体粒子和与所述流体粒子发生碰撞的模型粒子之间的第一距离对应的第二权重;
基于所述第一距离、所述法向信息、所述第一权重、所述第二权重、以及预设距离,确定所述流体粒子的位置修正量。
根据本公开的一个或多个实施例,本公开提供了一种电子设备,包括:
一个或多个处理器;
存储器,存储一个或多个应用程序,其中所述一个或多个应用程序被所述一个或多个处理器执行时,使得所述电子设备执行所述的交互式动态流体效果处理方法。
根据本公开的一个或多个实施例,本公开提供了一种计算机可读介质,所述计算机可读介质用于存储计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行所述的交互式动态流体效果处理方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。