特效渲染方法、装置、电子设备及存储介质与流程

文档序号:24161072发布日期:2021-03-05 16:57阅读:73来源:国知局
特效渲染方法、装置、电子设备及存储介质与流程

[0001]
本公开涉及特效渲染技术领域,尤其涉及特效渲染方法、装置、电子设备及存储介质。


背景技术:

[0002]
基于物质的物理特性的特效模拟是计算机图形学、数字娱乐(如游戏等)和虚拟现实领域的一项重要内容。相关技术中,在对水、果冻等连续物质的特效模拟时,主要是使用 sph(smoothed particle hydrodynamics,平滑虚拟粒子流体动力学)和mpm(material pointmethod,物质点法)对大量虚拟粒子进行离线的仿真和模拟,无法实现实时在线的模拟渲染且无法实现较真实的模拟效果。


技术实现要素:

[0003]
本公开提供一种特效渲染方法、装置、电子设备及存储介质,以至少解决相关技术中无法实现实时在线的模拟渲染且模拟效果差的问题。本公开的技术方案如下:
[0004]
根据本公开实施例的第一方面,提供一种特效渲染方法,包括:
[0005]
响应于特效渲染触发指令,获取模拟目标物质的虚拟粒子的初始参数,所述初始参数表征所述虚拟粒子在初始状态下的布局信息和运动信息;
[0006]
确定目标页面中目标对象的目标关键点;
[0007]
基于所述初始参数渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点流出的第一特效。
[0008]
可选的,所述初始参数包括初始密度,所述基于所述初始参数渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点流出的第一特效包括:
[0009]
根据所述目标关键点和所述初始密度,确定所述虚拟粒子在所述目标页面的初始位置;
[0010]
根据密度颜色映射关系、所述初始密度和所述初始位置确定所述虚拟粒子的初始颜色信息,所述密度颜色映射关系表征每个像素点上的虚拟粒子的平均密度与颜色间的映射关系;
[0011]
基于所述初始颜色信息和所述虚拟粒子对应的初始形状渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点处流出的第一特效。
[0012]
可选的,所述初始参数还包括初始密度,在基于所述初始颜色信息和所述虚拟粒子对应的初始形状渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点处流出的第一特效之前,所述方法还包括:
[0013]
将所述虚拟粒子的初始速度的大小和方向转换成由所述初始位置处出发的目标向量;
[0014]
根据所述目标向量,对所述虚拟粒子对应的初始形状进行拉伸处理,得到所述虚拟粒子的目标形状;
[0015]
所述基于所述初始颜色信息和所述虚拟粒子对应的初始形状渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点处流出的第一特效包括:
[0016]
基于所述初始颜色信息和所述目标形状渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点处流出的第一特效。
[0017]
可选的,所述虚拟粒子包括第一数量个虚拟粒子;所述根据密度颜色映射关系、所述初始密度和所述初始位置确定所述虚拟粒子的初始颜色信息包括:
[0018]
根据每个虚拟粒子在所述目标页面的初始位置依次渲染所述每个虚拟粒子的预设纹理,得到目标纹理;
[0019]
从所述目标纹理提取所述每个虚拟粒子所在位置的透明度,并将所述每个虚拟粒子所在位置的透明度作为所述每个虚拟粒子的密度权重;
[0020]
根据所述第一数量个虚拟粒子的密度权重,计算所述目标纹理的每个像素点上虚拟粒子的密度权重之和;
[0021]
根据所述第一数量个虚拟粒子的密度权重和所述第一数量个虚拟粒子的初始密度,计算所述目标纹理的每个像素点上虚拟粒子的密度加权之和;
[0022]
根据所述密度权重之和和所述密度加权之和,确定所述每个像素点上的平均密度;
[0023]
根据所述密度颜色映射关系和所述每个像素点上的平均密度,确定所述每个像素点上虚拟粒子的初始颜色信息。
[0024]
可选的,在根据所述密度颜色映射关系和所述每个像素点上的平均密度,确定所述每个像素点上虚拟粒子的初始颜色信息之后,所述方法还包括:
[0025]
获取所述每个像素点对应的预设透明度;
[0026]
基于所述每个像素点对应的预设透明度更新所述每个像素点上虚拟粒子的初始颜色信息。
[0027]
可选的,所述初始参数还包括:初始粒网传动参数,所述初始粒网传动参数表征所述虚拟粒子的物理属性中传递给目标网格的物理属性,所述目标网格为对所述目标页面进行网格剖分得到的;所述方法还包括:
[0028]
根据所述虚拟粒子的初始粒网传动参数,确定所述目标网格在当前时刻的物理属性;
[0029]
根据所述目标网格在所述当前时刻的物理属性确定所述目标网格在所述当前时刻的下一时刻的网粒传动参数,所述网粒传动参数表征所述目标网格的物理属性中传递给所虚拟粒子的物理属性;
[0030]
基于所述目标网格在所述下一时刻的网粒传动参数确定所述虚拟粒子在所述下一时刻的速度;
[0031]
根据所述虚拟粒子在所述下一时刻的速度、所述目标网格在所述下一时刻的物理属性和所述初始位置,确定所述虚拟粒子在所述下一时刻的位置;
[0032]
根据所述虚拟粒子在所述下一时刻的位置,确定所述虚拟粒子在所述下一时刻的密度;
[0033]
基于所述下一时刻的密度、所述下一时刻的位置和所述下一时刻的速度,将所述第一特效更新为所述目标物质在所述目标页面流动的第二特效。
[0034]
可选的,所述虚拟粒子包括第一数量个虚拟粒子,所述根据所述虚拟粒子在所述下一时刻的位置,确定所述虚拟粒子在所述下一时刻的密度包括:
[0035]
根据所述虚拟粒子在所述下一时刻的位置确定所述每个虚拟粒子预设范围内的虚拟粒子数量;
[0036]
根据所述每个虚拟粒子预设范围内的虚拟粒子数量,计算所述每个虚拟粒子在所述下一时刻的密度。
[0037]
可选的,所述根据所述每个虚拟粒子预设范围内的虚拟粒子数量,计算所述每个虚拟粒子在所述下一时刻的密度包括:
[0038]
根据虚拟粒子数量与密度值之间的映射关系和所述每个虚拟粒子预设范围内的虚拟粒子数量,确定所述每个虚拟粒子在所述下一时刻的初始密度值;
[0039]
将在所述下一时刻的初始密度值大于等于第一密度阈值的虚拟粒子作为第一虚拟粒子,并将所述第一密度阈值作为所述第一虚拟粒子在所述下一时刻的密度;
[0040]
将在所述下一时刻的初始密度值小于等于第二密度阈值的虚拟粒子作为第二虚拟粒子,将所述第二密度阈值作为所述第二虚拟粒子在所述下一时刻的密度;
[0041]
将在所述下一时刻的初始密度值大于所述第二密度阈值,且小于所述第一密度阈值的虚拟粒子作为第三虚拟粒子,将所述第三虚拟粒子在所述下一时刻的初始密度值作为所述第三虚拟粒子在所述下一时刻的密度;
[0042]
其中,所述第一密度阈值大于所述第二密度阈值。
[0043]
可选的,所述目标网格包括第二数量个子网格;所述初始传动参数包括:初始质量和初始动量;所述物理属性包括质量和动量,所述虚拟粒子包括第一数量个虚拟粒子,所述根据所述虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性包括:
[0044]
将所述每个虚拟粒子所处子网格,以及与所述所处子网格相邻的子网格作为与所述每个虚拟粒子关联的子网格,并将所述每个虚拟粒子作为与所述每个虚拟粒子关联的子网格的关联虚拟粒子;
[0045]
根据移动最小二乘法,计算所述每个虚拟粒子对与所述每个虚拟粒子关联的子网格的传动影响因素;
[0046]
根据每个子网络的关联虚拟粒子的初始质量、初始动量和对应的传动影响因素,计算所述每个子网络在所述当前时刻的质量和动量。
[0047]
可选的,所述初始传动参数还包括:初始形变梯度、初始体积和初始弹性参数;所述物理属性还包括受力信息;所述根据所述虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性还包括:
[0048]
计算所述当前时刻所述每个子网格的关联虚拟粒子与所述每个子网格间的相对距离;
[0049]
基于预设弹性模型、所述每个子网格对应的相对距离、所述每个子网格的关联虚拟粒子的初始体积、初始形变梯度以及初始弹性参数,确定所述每个子网格在所述当前时刻的弹力;
[0050]
根据所述每个子网格在所述当前时刻的质量和重力加速度,计算所述每个子网格在所述当前时刻的重力;
[0051]
将所述第二数量个子网格在所述当前时刻的重力和弹力作为所述目标网格在所
述当前时刻的受力信息。
[0052]
可选的,在根据所述每个子网格在所述当前时刻的质量和重力加速度,计算所述每个子网格在所述当前时刻的重力之前,所述方法还包括:
[0053]
获取所述目标网格对应的方向偏移信息;
[0054]
根据所述方向偏移信息更新所述每个子网格在所述当前时刻的重力加速度,得到所述每个子网格在所述当前时刻的更新后的重力加速度;
[0055]
所述根据所述每个子网格在所述当前时刻的质量和重力加速度,计算所述每个子网格在所述当前时刻的重力包括:根据所述每个子网格在所述当前时刻的质量和更新后的重力加速度,计算所述每个子网格在所述当前时刻的重力。
[0056]
可选的,在基于所述下一时刻的密度、所述下一时刻的位置和所述下一时刻的速度,将所述第一特效更新为所述目标物质在所述目标页面流动的第二特效之后,将所述下一时刻更新为所述当前时刻,所述方法还包括:
[0057]
将所述虚拟粒子在所述下一时刻的速度、密度和位置,分别更新为所述虚拟粒子在更新后的当前时刻的速度、密度和位置;
[0058]
基于所述虚拟粒子在所述更新后的当前时刻的速度、密度和位置重复上述根据所述虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性至所述基于所述下一时刻的密度、所述下一时刻的位置和所述下一时刻的速度,将所述第一特效更新为所述目标物质在所述目标页面流动的第二特效的步骤,以将所述第二特效更新为所述目标物质在所述目标页面流动的第三特效。
[0059]
可选的,所述初始参数还包括初始弹性参数,当所述目标物质为固态软体时,所述方法还包括:
[0060]
获取所述虚拟粒子在所述更新后的当前时刻的体积;
[0061]
计算所述虚拟粒子在所述更新后的当前时刻的体积与初始体积间的比值;
[0062]
根据所述虚拟粒子的初始弹性参数和对应的比值,计算所述虚拟粒子在所述更新后的当前时刻的弹性参数;
[0063]
基于所述虚拟粒子在所述更新后的当前时刻的弹性参数更新所述目标网格的受力信息。
[0064]
可选的,所述初始参数还包括初始形变梯度,所述方法还包括:
[0065]
获取所述虚拟粒子在所述更新后的当前时刻的角动量矩阵和转动惯量矩阵;
[0066]
根据所述角动量矩阵、所述转动惯量矩阵和所述初始形变梯度,确定所述虚拟粒子在所述更新后的当前时刻的形变梯度;
[0067]
基于所述虚拟粒子在所述更新后的当前时刻的形变梯度更新所述目标网格的受力信息。
[0068]
根据本公开实施例的第二方面,提供一种特效渲染装置,包括:
[0069]
初始参数获取模块,被配置为执行响应于特效渲染触发指令,获取模拟目标物质的虚拟粒子的初始参数,所述初始参数表征所述虚拟粒子在初始状态下的布局信息和运动信息;
[0070]
目标关键点确定模块,被配置为执行确定目标页面中目标对象的目标关键点;
[0071]
特效渲染模块,被配置为执行基于所述初始参数渲染所述虚拟粒子,以生成所述
目标物质从所述目标关键点流出的第一特效。
[0072]
可选的,所述初始参数包括初始密度,所述特效渲染模块包括:
[0073]
初始位置确定单元,被配置为执行根据所述目标关键点和所述初始密度,确定所述虚拟粒子在所述目标页面的初始位置;
[0074]
初始颜色信息确定单元,被配置为执行根据密度颜色映射关系、所述初始密度和所述初始位置确定所述虚拟粒子的初始颜色信息,所述密度颜色映射关系表征每个像素点上的虚拟粒子的平均密度与颜色间的映射关系;
[0075]
特效渲染单元,被配置为执行基于所述初始颜色信息和所述虚拟粒子对应的初始形状渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点处流出的第一特效。
[0076]
可选的,所述初始参数还包括初始密度,所述特效渲染模块还包括:
[0077]
向量转换单元,被配置为执行将所述虚拟粒子的初始速度的大小和方向转换成由所述初始位置处出发的目标向量;
[0078]
拉伸处理单元,被配置为执行根据所述目标向量,对所述虚拟粒子对应的初始形状进行拉伸处理,得到所述虚拟粒子的目标形状;
[0079]
所述特效渲染单元还被配置为执行基于所述初始颜色信息和所述目标形状渲染所述虚拟粒子,以生成所述目标物质从所述目标关键点处流出的第一特效。
[0080]
可选的,所述虚拟粒子包括第一数量个虚拟粒子;所述初始颜色信息确定单元包括:
[0081]
目标纹理渲染单元,被配置为执行根据每个虚拟粒子在所述目标页面的初始位置依次渲染所述每个虚拟粒子的预设纹理,得到目标纹理;
[0082]
密度权重确定单元,被配置为执行从所述目标纹理提取所述每个虚拟粒子所在位置的透明度,并将所述每个虚拟粒子所在位置的透明度作为所述每个虚拟粒子的密度权重;
[0083]
密度权重之和计算单元,被配置为执行根据所述第一数量个虚拟粒子的密度权重,计算所述目标纹理的每个像素点上虚拟粒子的密度权重之和;
[0084]
密度加权之和计算单元,被配置为执行根据所述第一数量个虚拟粒子的密度权重和所述第一数量个虚拟粒子的初始密度,计算所述目标纹理的每个像素点上虚拟粒子的密度加权之和;
[0085]
平均密度确定单元,被配置为执行根据所述密度权重之和和所述密度加权之和,确定所述每个像素点上的平均密度;
[0086]
初始颜色信息确定子单元,被配置为执行根据所述密度颜色映射关系和所述每个像素点上的平均密度,确定所述每个像素点上虚拟粒子的初始颜色信息。
[0087]
可选的,所述初始颜色信息确定单元还包括:
[0088]
预设透明度获取单元,被配置为执行获取所述每个像素点对应的预设透明度;
[0089]
初始颜色信息更新单元,被配置为执行基于所述每个像素点对应的预设透明度更新所述每个像素点上虚拟粒子的初始颜色信息。
[0090]
可选的,所述初始参数还包括:初始粒网传动参数,所述初始粒网传动参数表征所述虚拟粒子的物理属性中传递给目标网格的物理属性,所述目标网格为对所述目标页面进行网格剖分得到的;所述装置还包括:
[0091]
网格物理属性确定模块,被配置为执行根据所述虚拟粒子的初始粒网传动参数,确定所述目标网格在当前时刻的物理属性;
[0092]
网粒传动参数确定模块,被配置为执行根据所述目标网格在所述当前时刻的物理属性确定所述目标网格在所述当前时刻的下一时刻的网粒传动参数,所述网粒传动参数表征所述目标网格的物理属性中传递给所虚拟粒子的物理属性;
[0093]
粒子速度更新模块,被配置为执行基于所述目标网格在所述下一时刻的网粒传动参数确定所述虚拟粒子在所述下一时刻的速度;
[0094]
粒子位置更新模块,被配置为执行根据所述虚拟粒子在所述下一时刻的速度、所述目标网格在所述下一时刻的物理属性和所述初始位置,确定所述虚拟粒子在所述下一时刻的位置;
[0095]
粒子密度更新模块,被配置为执行根据所述虚拟粒子在所述下一时刻的位置,确定所述虚拟粒子在所述下一时刻的密度;
[0096]
第一特效更新模块,被配置为执行基于所述下一时刻的密度、所述下一时刻的位置和所述下一时刻的速度,将所述第一特效更新为所述目标物质在所述目标页面流动的第二特效。
[0097]
可选的,所述虚拟粒子包括第一数量个虚拟粒子,所述粒子密度更新模块包括:
[0098]
虚拟粒子数量确定单元,被配置为执行根据所述虚拟粒子在所述下一时刻的位置确定所述每个虚拟粒子预设范围内的虚拟粒子数量;
[0099]
密度计算单元,被配置为执行根据所述每个虚拟粒子预设范围内的虚拟粒子数量,计算所述每个虚拟粒子在所述下一时刻的密度。
[0100]
可选的,所述密度计算单元包括:
[0101]
初始密度值确定单元,被配置为执行根据虚拟粒子数量与密度值之间的映射关系和所述每个虚拟粒子预设范围内的虚拟粒子数量,确定所述每个虚拟粒子在所述下一时刻的初始密度值;
[0102]
第一密度确定单元,被配置为执行将在所述下一时刻的初始密度值大于等于第一密度阈值的虚拟粒子作为第一虚拟粒子,并将所述第一密度阈值作为所述第一虚拟粒子在所述下一时刻的密度;
[0103]
第二密度确定单元,被配置为执行将在所述下一时刻的初始密度值小于等于第二密度阈值的虚拟粒子作为第二虚拟粒子,将所述第二密度阈值作为所述第二虚拟粒子在所述下一时刻的密度;
[0104]
第三密度确定单元,被配置为执行将在所述下一时刻的初始密度值大于所述第二密度阈值,且小于所述第一密度阈值的虚拟粒子作为第三虚拟粒子,将所述第三虚拟粒子在所述下一时刻的初始密度值作为所述第三虚拟粒子在所述下一时刻的密度;
[0105]
其中,所述第一密度阈值大于所述第二密度阈值。
[0106]
可选的,所述目标网格包括第二数量个子网格;所述初始传动参数包括:初始质量和初始动量;所述物理属性包括质量和动量,所述虚拟粒子包括第一数量个虚拟粒子,所述网格物理属性确定模块包括:
[0107]
关联网格确定单元,被配置为执行将所述每个虚拟粒子所处子网格,以及与所述所处子网格相邻的子网格作为与所述每个虚拟粒子关联的子网格;
[0108]
关联虚拟粒子确定单元,被配置为执行将所述每个虚拟粒子作为与所述每个虚拟粒子关联的子网格的关联虚拟粒子;
[0109]
传动影响因素计算单元,被配置为执行根据移动最小二乘法,计算所述每个虚拟粒子对与所述每个虚拟粒子关联的子网格的传动影响因素;
[0110]
质动量计算单元,被配置为执行根据每个子网络的关联虚拟粒子的初始质量、初始动量和对应的传动影响因素,计算所述每个子网络在所述当前时刻的质量和动量。
[0111]
可选的,所述初始传动参数还包括:初始形变梯度、初始体积和初始弹性参数;所述物理属性还包括受力信息;所述网格物理属性确定模块还包括:
[0112]
相对距离计算单元,被配置为执行计算所述当前时刻所述每个子网格的关联虚拟粒子与所述每个子网格间的相对距离;
[0113]
弹力确定单元,被配置为执行基于预设弹性模型、所述每个子网格对应的相对距离、所述每个子网格的关联虚拟粒子的初始体积、初始形变梯度以及初始弹性参数,确定所述每个子网格在所述当前时刻的弹力;
[0114]
重力计算单元,被配置为执行根据所述每个子网格在所述当前时刻的质量和重力加速度,计算所述每个子网格在所述当前时刻的重力;
[0115]
受力信息确定单元,被配置为执行将所述第二数量个子网格在所述当前时刻的重力和弹力作为所述目标网格在所述当前时刻的受力信息。
[0116]
可选的,所述网格物理属性确定模块还包括:
[0117]
方向偏移信息获取单元,被配置为执行获取所述目标网格对应的方向偏移信息;
[0118]
重力加速度更新单元,被配置为执行根据所述方向偏移信息更新所述每个子网格在所述当前时刻的重力加速度,得到所述每个子网格在所述当前时刻的更新后的重力加速度;
[0119]
所述重力计算单元还被配置为执行根据所述每个子网格在所述当前时刻的质量和更新后的重力加速度,计算所述每个子网格在所述当前时刻的重力。
[0120]
可选的,在基于所述下一时刻的密度、所述下一时刻的位置和所述下一时刻的速度,将所述第一特效更新为所述目标物质在所述目标页面流动的第二特效之后,将所述下一时刻更新为所述当前时刻,所述装置还包括:
[0121]
参数更新模块,被配置为执行将所述虚拟粒子在所述下一时刻的速度、密度和位置,分别更新为所述虚拟粒子在更新后的当前时刻的速度、密度和位置;
[0122]
第二特效更新模块,被配置为执行基于所述虚拟粒子在所述更新后的当前时刻的速度、密度和位置重复上述根据所述虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性至所述基于所述下一时刻的密度、所述下一时刻的位置和所述下一时刻的速度,将所述第一特效更新为所述目标物质在所述目标页面流动的第二特效的步骤,以将所述第二特效更新为所述目标物质在所述目标页面流动的第三特效。
[0123]
可选的,所述初始参数还包括初始弹性参数,当所述目标物质为固态软体时,所述装置还包括:
[0124]
体积获取模块,被配置为执行获取所述虚拟粒子在所述更新后的当前时刻的体积;
[0125]
体积比计算模块,被配置为执行计算所述虚拟粒子在所述更新后的当前时刻的体
积与初始体积间的比值;
[0126]
弹性参数更新模块,被配置为执行根据所述虚拟粒子的初始弹性参数和对应的比值,计算所述虚拟粒子在所述更新后的当前时刻的弹性参数;
[0127]
第一受力信息更新模块,被配置为执行基于所述虚拟粒子在所述更新后的当前时刻的弹性参数更新所述目标网格的受力信息。
[0128]
可选的,所述初始参数还包括初始形变梯度,所述装置还包括:
[0129]
矩阵获取模块,被配置为执行获取所述虚拟粒子在所述更新后的当前时刻的角动量矩阵和转动惯量矩阵;
[0130]
形变梯度确定模块,被配置为执行根据所述角动量矩阵、所述转动惯量矩阵和所述初始形变梯度,确定所述虚拟粒子在所述更新后的当前时刻的形变梯度;
[0131]
第二受力信息更新模块,被配置为执行基于所述虚拟粒子在所述更新后的当前时刻的形变梯度更新所述目标网格的受力信息。
[0132]
根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上述第一方面中任一项所述的方法。
[0133]
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行本公开实施例的第一方面中任一所述方法。
[0134]
根据本公开实施例的第五方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本公开实施例的第一方面中任一所述方法。
[0135]
本公开的实施例提供的技术方案至少带来以下有益效果:
[0136]
通过预先设置模拟目标物质的虚拟粒子的初始参数,并确定出目标页面中目标对象的目标关键点,可以实现实时在线的模拟目标物质从目标关键点流出的第一特效,且预先设置的初始参数可以表征虚拟粒子在初始状态下的布局信息和运动信息,可以大大提高渲染的特效的真实性,改善仿真效果。
[0137]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0138]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
[0139]
图1是根据一示例性实施例示出的一种特效渲染方法的流程图。
[0140]
图2是根据一示例性实施例示出的一种基于初始参数渲染虚拟粒子,以生成目标物质从目标关键点流出的第一特效方法的流程图;
[0141]
图3是根据一示例性实施例示出的一种根据密度颜色映射关系、初始密度和初始位置确定虚拟粒子的初始颜色信息方法的流程示意图;
[0142]
图4是根据一示例性实施例示出的一种未渲染有颜色信息的虚拟粒子的示意图;
[0143]
图5是根据一示例性实施例示出的一种在第一特效基础上进行特效更新的流程图;
[0144]
图6是根据一示例性实施例示出的一种根据第一数量个虚拟粒子的初始质量和初始动量,确定目标网格在当前时刻的物理属性方法的流程图;
[0145]
图7是根据一示例性实施例示出的另一种根据虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性方法的流程图;
[0146]
图8是根据一示例性实施例示出的一种特效渲染装置框图;
[0147]
图9是根据一示例性实施例示出的一种用于特效渲染的电子设备的框图。
具体实施方式
[0148]
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[0149]
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0150]
图1是根据一示例性实施例示出的一种特效渲染方法的流程图,如图1所示,该特效渲染方法用于终端、边缘计算节点等电子设备中,包括以下步骤。
[0151]
在步骤s101中,响应于特效渲染触发指令,获取模拟目标物质的虚拟粒子的初始参数。
[0152]
在一个可选的实施例中,用户进入进行特效渲染的目标页面中,就可以触发上述特效渲染触发指令,并获取模拟目标物质的虚拟粒子的初始参数。
[0153]
本说明书实施例中,目标物质可以为一些连续物质;可选的,目标物质可以为水、饮料等液体;可选的,目标物质可以为雪,果冻等固态软体。
[0154]
本说明书实施例中,虚拟粒子可以用于在特效渲染时,模拟目标物质。具体的,模拟目标物质的虚拟粒子的数量可以为第一数量,可选的,第一数量可以为至少两个,可选的第一数量也可以为一个;在一个可选的实施例中,可以结合设备的算力,设置相应的虚拟粒子的数量;具体的,设备的算力越强,相应的虚拟粒子的数量可以越多;反之,设备的算力越弱,相应的虚拟粒子的数量可以越少,一般的,虚拟粒子的数量越多特效的仿真效果会越好。
[0155]
本说明书实施例中,初始参数表征虚拟粒子在初始状态下的布局信息和运动信息。在一个具体的实施例中,初始参数可以包括初始密度、初始速度、弹性参数、初始质量、初始位置、初始体积、初始动量和初始形变梯度中的至少一种粒子的物理属性;其中,初始动量为初始速度和初始质量的乘积;可选的,弹性参数可以包括但不限于物质的杨氏模量和泊松比中的至少一种。
[0156]
在步骤s103中,确定目标页面中目标对象的目标关键点。
[0157]
在一个可选的实施例中,具有固定场景的目标页面中目标对象的目标关键点可以为目标页面中预设的关键点,例如在固定的模拟高山瀑布的场景中,由于固定场景中山的位置是固定的,相应的,目标关键点可以为固定位置的山的边缘(预设的关键点)。
[0158]
在另一个可选的实施例中,在目标页面中的场景时动态变化的情况下,确定目标页面中目标对象的目标关键点可以包括:检测目标页面中的目标对象;提取目标对象中的关键点;从关键点中确定目标关键点。
[0159]
在一个可选的实施例中,目标对象可以为有目标物质流出的对象,具体的,目标对象可以结合实际应用场景的不同而不同,例如模拟人流泪的场景,目标对象可以为人脸,相应的目标物质可以为眼泪。例如模拟高山瀑布的场景中,目标对象可以为山,相应的目标物质可以为水;例如模拟雪从雪山上滚落的场景,目标对象可以为雪山,相应的目标物质可以为雪。
[0160]
此外,需要说明的是,在实际应用中,可以基于一个目标对象进行多种场景的模拟,例如目标对象为人脸时,除上述模拟人流泪的场景外,还可以模拟人流口水、模拟人流鼻涕,模拟人脑袋进水了(相应的可以从人耳出往外流水)等场景,在一个目标对象对应多个场景的情况下,可以结合实际需求单场景模拟,也可以同时模拟至少两种场景。
[0161]
在一个可选的实施例中,在一个目标对象对应多个场景的情况下,上述提取目标对象中的关键点可以包括提取目标对象多种场景对应的关键点;相应的,上述从关键点中确定目标关键点之前,可以接收预设场景选取指令,相应的,上述从关键点中确定目标关键点可以包括将与该预设场景选取指令对应的关键点作为目标关键点。可选的,预设场景选取指令可以结合不同场景而有不同的触发方式,例如,模拟人流泪的场景对应的预设场景选取指令可以通过检测人眨眼睛动作的方式触发;模拟人脑袋进水了的场景对应的预设场景选取指令可以通过检测拍脑袋的动作的方式触发。
[0162]
此外,上述触发预设场景选取指令仅仅是一种示例,在实际应用中,还可以采取其他方式触发,例如可以通过设置时间的方式触发预设场景选取指令,在一个具体的实施例中,例如5秒触发模拟人流泪的场景、10秒触发模拟人流口水的场景等。
[0163]
在另一个可选的实施例中,接收预设场景选取指令也可以在提取目标对象中的关键点或者检测目标页面中的目标对象之前,相应的,提取目标对象中的关键点可以包括提取目标对象中与该预设场景选取指令对应的关键点。
[0164]
在一个可选的实施例中,检测目标对象以及提取目标对象的关键点可以结合相应的的人工智能技术。
[0165]
在步骤s105中,基于初始参数渲染虚拟粒子,以生成目标物质从目标关键点流出的第一特效。
[0166]
在一个可选的实施例中,如图2所示,基于初始参数渲染虚拟粒子,以生成目标物质从目标关键点流出的第一特效可以包括以下步骤:
[0167]
在步骤s201中,根据目标关键点和初始密度,确定虚拟粒子在目标页面的初始位置;
[0168]
在实际应用中,一个虚拟粒子的初始密度可以表征在该虚拟粒子预设范围内的虚拟粒子数量;相应的,在初始状态下虚拟粒子数量和每个虚拟粒子预设范围内的虚拟粒子数量确定的情况下,这些虚拟粒子的相对位置关系是固定的,然后,结合目标关键点就可以确定出要模拟出目标物质从目标关键点流出的情况下,这第一数量个虚拟粒子在目标页面的初始位置。
[0169]
上述实施例中,结合实际应用场景中检测出的目标关键点,来确定虚拟粒子在目
标页面的初始位置,可以满足不同动态场景下的需求,实现特效渲染位置的动态确定。
[0170]
在步骤s203中,根据密度颜色映射关系、初始密度和初始位置确定虚拟粒子的初始颜色信息。
[0171]
本说明书实施例中,可以预先获取密度颜色映射关系,具体的,该密度颜色映射关系可以表征每个像素点上的虚拟粒子的平均密度与颜色间的映射关系。在一个具体的实施例中,密度颜色映射关系可以为:vec3 color=pow(color0,2.0*r*r),其中,vec3 color可以表示由至少一个虚拟粒子(一般的至少为两个)覆盖的某一像素点上的颜色,color0为预设的参考色;vec3表示一个三维浮点数数组,即颜色信息为一个三维浮点数数组。r为该像素点上的虚拟粒子的平均密度,pow(color0,2.0*r*r)表示返回color0的2.0*r*r次幂。
[0172]
在一个具体的实施例中,当目标物质为水时,color0可以为rgb38,150,179。
[0173]
在一个可选的实施例中,如图3所示,根据密度颜色映射关系、初始密度和初始位置确定虚拟粒子的初始颜色信息可以包括以下步骤:
[0174]
在步骤s301中,根据每个虚拟粒子在目标页面的初始位置依次渲染每个虚拟粒子的预设纹理,得到目标纹理;
[0175]
在步骤s303中,从目标纹理提取每个虚拟粒子所在位置的透明度,并将每个虚拟粒子所在位置的透明度作为每个虚拟粒子的密度权重;
[0176]
在步骤s305中,根据第一数量个虚拟粒子的密度权重,计算目标纹理的每个像素点上虚拟粒子的密度权重之和;
[0177]
在步骤s307中,根据第一数量个虚拟粒子的密度权重和第一数量个虚拟粒子的初始密度,计算目标纹理的每个像素点上虚拟粒子的密度加权之和;
[0178]
在步骤s309中,根据密度权重之和和密度加权之和,确定每个像素点上的平均密度;
[0179]
在步骤s311中,根据密度颜色映射关系和每个像素点上的平均密度,确定每个像素点上虚拟粒子的初始颜色信息。
[0180]
在一个可选的实施例中,可以将虚拟粒子的预设纹理渲染在离屏浮点纹理上。本说明书实施例中,离屏浮点纹理可以为缓存中预设的纹理,可以在离屏浮点纹理上模拟虚拟粒子的渲染。每个虚拟粒子的密度权重表征每个虚拟粒子在所覆盖像素点上的权重。
[0181]
在一个具体的实施例中,可以将根据密度权重之除以和密度加权之和,得到每个像素点上的平均密度。
[0182]
相应的,将每个像素点上的虚拟粒子的初始颜色信息作为上述第一数量个虚拟粒子的初始颜色信息。
[0183]
上述实施例中,通过预先模拟虚拟粒子的渲染,可以结合模拟的渲染结果确定每个虚拟粒子在所覆盖像素点上的权重,进而快速确定出每个像素点上虚拟粒子的初始颜色信息,为后续在实际的目标页面中进行渲染提供数据支持,使得后续虚拟粒子密度越大的(通常是碰撞越激烈)的地方颜色越偏白,大大提高特效的真实性。
[0184]
在一个可选的实施例中,为了更好的模拟水等液体,在步骤s311中之后,上述方法还可以包括:
[0185]
获取每个像素点对应的预设透明度;
[0186]
基于每个像素点对应的预设透明度更新每个像素点上虚拟粒子的初始颜色信息;
[0187]
相应的,将每个像素点上的虚拟粒子的初始颜色信息作为第一数量个虚拟粒子的初始颜色信息包括将更新后的每个像素点上的虚拟粒子的初始颜色信息作为第一数量个虚拟粒子的初始颜色信息。
[0188]
在一个可选的实施例中,预设透明度可以为结合每个像素点上虚拟粒子的密度权重之和确定的透明度,在一个具体的实施例中,预设透明度可以为mask_val=clamp(d.y,p1, p2),其中,mask_val为每个像素点对应的预设透明度,d.y为每个像素点上虚拟粒子的密度权重之和,p1为结合水等透明液体的实际透明度情况设置的透明度下限值;p2为结合水等透明液体的实际透明度情况设置的透明度上限值,在一个具体的实施例中,假设 p1=0.0,p2=0.8,clamp(d.y,0.0,0.8)表示当任一像素点上虚拟粒子的密度权重之和大于等于0.8时,返回0.8;当任一像素点上虚拟粒子的密度权重之和小于等于0.0时,返回0;当任一像素点上虚拟粒子的密度权重之和大于0.0确小于0.8时,返回d.y。相应的,更新后的每个像素点上的虚拟粒子的初始颜色信息可以为gl_fragcolor=vec4(color, mask_val),color为每个像素点上的虚拟粒子的初始颜色信息。vec4表示保存的是颜色数据。
[0189]
上述实施例中,通过将每个像素点对应的预设透明度更新到每个像素点对应的初始颜色信息中,可以有效提升模拟透明液体的仿真效果。
[0190]
在步骤s205中,基于初始颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以生成目标物质从目标关键点处流出的第一特效。
[0191]
本说明书实施例中,第一特效可以为模拟目标物质从目标关键点处流出的初始状态下的特效。在实际应用中,渲染虚拟粒子时,虚拟粒子往往是具有预设纹理(预设圆形光圈) 的正方形(即初始形状),具体的,如图4所示,图4是根据一示例性实施例示出的一种未渲染有颜色信息的虚拟粒子的示意图。
[0192]
本说明书实施例中,在渲染上述第一数量个虚拟粒子时,可以预先绘制一个与目标页面对应的全屏矩形面片,在该全拼矩形面片结合第一数量个虚拟粒子的初始颜色信息和初始形状在每个像素点上渲染相应的虚拟粒子,以生成目标物质从目标关键点处流出的第一特效。
[0193]
由以上本说明书实施例提供的技术方案可见,本说明书实施例中,通过预先设置模拟目标物质的虚拟粒子的初始参数,并确定出目标页面中目标对象的目标关键点,可以实现实时在线的模拟目标物质从目标关键点流出的第一特效,且预先设置的初始参数可以表征虚拟粒子在初始状态下的布局信息和运动信息,可以大大提高渲染的特效的真实性,改善仿真效果。
[0194]
在一个可选的实施例中,在基于初始颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以生成目标物质从目标关键点处流出的第一特效之前,上述方法还可以包括:
[0195]
将虚拟粒子的初始速度的大小和方向转换成由初始位置处出发的目标向量;
[0196]
根据目标向量,对虚拟粒子对应的初始形状进行拉伸处理,得到虚拟粒子的目标形状;
[0197]
基于初始颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以生成目标物质从目标关键点处流出的第一特效包括:
[0198]
基于初始颜色信息和目标形状渲染虚拟粒子,以生成目标物质从目标关键点处流出的第一特效。
[0199]
基于正方形的的虚拟粒子直接进行渲染,往往会存在颗粒感,导致模拟出的特效失真。
[0200]
本说明书实施例中,为了能够减少渲染时产生的失真颗粒感,提高渲染的特效仿真效果,可以将每个虚拟粒子的初始速度的大小和方向折算为一个由该虚拟粒子的初始位置出发的目标向量,相应的,根据每个虚拟粒子对应的目标向量,对各自对应的初始形状由各自的初始位置处进行拉伸处理,得到第一数量个虚拟粒子的目标形状,虚拟粒子的目标形状可以为平行四边形,相应的,初始形状中预设圆形光圈由圆形拉伸为椭圆形。
[0201]
上述实施例中,根据虚拟粒子速度的大小和方向生成由虚拟粒子的初始位置处出发的目标向量,并结合目标向量对虚拟粒子的初始形状进行拉伸,能够减少渲染时产生的失真颗粒感,大大提高渲染的特效的真实性,改善仿真效果。
[0202]
在一个可选的实施例中,在动态场景下,渲染的特效需要不断的更新变化,相应的,如图5所示,图5是根据一示例性实施例示出的一种在第一特效基础上进行特效更新的流程图,具体的,可以包括以下步骤:
[0203]
在步骤s501中,根据虚拟粒子的初始粒网传动参数,确定目标网格在当前时刻的物理属性;
[0204]
本说明书实施例中,可以预先将目标页面剖分成包括第二数量个子网格的目标网格,即上述目标网格为对目标页面进行网格剖分得到的。具体的,子网格的数量(第二数量) 可以结合实际页面的大小进行设置。相应的,可以将当前时刻的第一数量个虚拟粒子的初始粒网传动参数传递给目标网格。本说明书实施例中,初始粒网传动参数可以表征虚拟粒子的物理属性中传递给目标网格的物理属性。
[0205]
在一个可选的实施例中,初始粒网传动参数可以包括初始质量和初始动量,相应的,目标网格的物理属性可以包括质量和动量;如图6所示,根据第一数量个虚拟粒子的初始质量和初始动量,确定目标网格在当前时刻的物理属性可以包括以下步骤:
[0206]
在步骤s601中,将每个虚拟粒子所处子网格,以及与所处子网格相邻的子网格作为与每个虚拟粒子关联的子网格,并将每个虚拟粒子作为与每个虚拟粒子关联的子网格的关联虚拟粒子。
[0207]
在一个可选的实施例中,某一子网格相邻的子网格可以为该子网格邻近的k阶网格,例如,若k=1,向该子网格的四周均扩散一个子网格,得到该子网格相邻的子网格,以 3*3的目标网格为例,向中间子网格四周均扩散一个子网格,得到8个相邻子网格;若k= 2,向该子网格的四周均扩散两个子网格。具体的,k的大小可以结合实际应用需要进行设置。
[0208]
在步骤s603中,根据移动最小二乘法,计算每个虚拟粒子对与每个虚拟粒子关联的子网格的传动影响因素。
[0209]
本说明书实施例中,每个虚拟粒子对与每个虚拟粒子关联的子网格的传动影响因素表征每个虚拟粒子的质量和动量,对与每个虚拟粒子关联的子网格的质量和动量的影响程度。
[0210]
具体的,可以根据每个虚拟粒子的位置、每个虚拟粒子关联的子网格的位置和二者的相对距离,并结合移动最小二乘法依次计算每个虚拟粒子对与每个虚拟粒子关联的子网格的传动影响因素。
[0211]
在步骤s605中,根据每个子网络的关联虚拟粒子的初始质量、初始动量和对应的
传动影响因素,计算每个子网络在当前时刻的质量和动量。
[0212]
在一个可选的实施例中,可以结合如下公式计算每个子网络在当前时刻的质量:
[0213][0214]
其中,表示第i个子网格在当前时刻的质量;表示第p个关联虚拟粒子在当前时刻(假设当前时刻为n时刻)对第i个的子网格的传动影响因素(也可以表示第i个子网格在当前时刻对第p个关联虚拟粒子的传动影响因素);表示第i个子网格的全部关联虚拟粒子在当前时刻对第i个子网格的传动影响因素;m
p
表示第p个虚拟粒子在当前时刻的质量(虚拟粒子的质量在不同时刻不变)。
[0215]
在一个可选的实施例中,可以结合如下公式计算每个子网络在当前时刻的动量:
[0216][0217]
其中,表示第i个子网格在当前时刻的动量,x
i
表示第i个子网格的位置(网格的位置在不同时刻不变);表示第p个关联虚拟粒子在当前时刻的位置(在初始时刻,即初始位置);表示第p个关联虚拟粒子在当前时刻的的速度;和用于保持局部速度的仿射变换关系,可以减少将虚拟粒子的动量转换成网格动量过程中的角动量信息的丢失。具体的,可以为能够表示第一数量个虚拟粒子在当前时刻的下一时刻的角动量的矩阵(简称角动量矩阵)可以为能够表示第一数量个虚拟粒子在当前时刻的转动惯量的矩阵(简称转动惯量矩阵);
[0218]
具体的,其中,表示第p个虚拟粒子的全部关联的子网格在当前时刻对第p个虚拟粒子的传动影响因素;表示第i个子网格在当前时刻的下一时刻的速度。
[0219]
上述实施例中,结合移动最小二乘法,计算每个虚拟粒子对与每个虚拟粒子关联的子网格的传动影响因素,可以有效加快特效生成速度,大大减少对设备算力的要求,进而有利于特效在大量不同算力的设备上的广泛推广,且结合虚拟粒子对关联的子网格的传动影响因素,可以将虚拟粒子的质量和动量传递给网格,模拟目标物质在运动过程中的变化。
[0220]
在一个可选的实施例中,上述初始传动参数还可以包括:初始形变梯度、初始体积和初始弹性参数;相应的,目标网格的物理属性还可以包括受力信息;相应的,如图7所示,根据虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性还可以包括:
[0221]
在步骤s701中,计算当前时刻每个子网格的关联虚拟粒子与每个子网格间的相对
距离;
[0222]
在步骤s703中,基于预设弹性模型、每个子网格对应的相对距离、每个子网格的关联虚拟粒子的初始体积、初始形变梯度以及初始弹性参数,确定每个子网格在当前时刻的弹力;
[0223]
在步骤s705中,根据每个子网格在当前时刻的质量和重力加速度,计算每个子网格在当前时刻的重力;
[0224]
在步骤s707中,将第二数量个子网格在当前时刻的重力和弹力作为目标网格在当前时刻的受力信息。
[0225]
在一个可选的实施例中,预设弹性模块可以包括但不限于于neo-hookean超弹性本构模型或fixed-corotated的弹性模型。
[0226]
上述实施例中,结合虚拟粒子的初始形变梯度、初始体积和初始弹性参数将虚拟粒子的物理属性传递给目标网格,实现对物质内力和重力变化的模拟。
[0227]
在一个可选的实施例中,在步骤s705之前,上述方法还包括:
[0228]
获取目标网格对应的方向偏移信息;
[0229]
根据方向偏移信息更新每个子网格在当前时刻的重力加速度,得到每个子网格在当前时刻的更新后的重力加速度;
[0230]
根据每个子网格在当前时刻的质量和重力加速度,计算每个子网格在当前时刻的重力包括:根据每个子网格在当前时刻的质量和更新后的重力加速度,计算每个子网格在当前时刻的重力。
[0231]
在实际应用中,当设备发生了位置偏移(移动,旋转,晃动等),陀螺仪事件就会被触发,此时陀螺仪事件对应的方向偏移信息即为目标网格的方向偏移信息,相应的,可以结合该方向偏移信息更新每个子网格的重力加速度,以调整每个子网格的受力信息(受力信息中的重力),进而实现可以随着设备的移动,旋转或晃动进行相应的移动,旋转或晃动的特效效果。
[0232]
在步骤s503中,根据目标网格在当前时刻的物理属性确定目标网格在当前时刻的下一时刻的网粒传动参数。
[0233]
本说明书实施例中,网粒传动参数表征目标网格的物理属性中传递给所虚拟粒子的物理属性;在一个可选的实施例中,网粒传动参数可以包括动量,相应的,确定目标网格在当前时刻的下一时刻的网粒传动参数可以采用下述公式:
[0234][0235]
其中,g表示重力加速度,表示第i个子网格在当前时刻受到的弹力。表示第i个子网格在当前时刻的重力。表示第i个子网格在当前时刻的动量;表示第i个子网格在当前时刻的下一时刻的动量;δt表示仿真时间步长(即当前时刻与当前时刻的下一时刻间的时间差)。
[0236]
在一个可选的实施例中,仿真时间步长数量级可以为10-4
秒。仿真时间步长越小,仿真特效更新的频率越高,相应的,目标物质的流动速度越快。
[0237]
在步骤s505中,基于目标网格在下一时刻的网粒传动参数确定虚拟粒子在下一时刻的速度。
[0238]
在一个可选的实施例中,确定每个虚拟粒子在下一时刻的速度可以采用下述公式:
[0239][0240]
其中,表示第p个虚拟粒子在上述当前时刻的下一时刻的动量,由于虚拟粒子的质量不变,在得到虚拟粒子在上述当前时刻的下一时刻的动量之后,结合虚拟粒子的质量就可以得到虚拟粒子在上述当前时刻的下一时刻的速度;表示第p个虚拟粒子的全部关联的子网格在下一时刻对第p个虚拟粒子的传动影响因素;表示第i个子网格在当前时刻的下一时刻的动量。
[0241]
在步骤s507中,根据虚拟粒子在下一时刻的速度、目标网格在下一时刻的物理属性和初始位置,确定虚拟粒子在下一时刻的位置;
[0242]
在一个可选的实施例中,根据隐式欧拉法,结合第一数量个虚拟粒子在下一时刻的速度、目标网格在下一时刻的物理属性中的质量和动量和第一数量个虚拟粒子的初始位置,确定出第一数量个虚拟粒子在下一时刻的位置。
[0243]
在步骤s509中,根据虚拟粒子在下一时刻的位置,确定虚拟粒子在下一时刻的密度;
[0244]
在一个具体的实施例中,根据虚拟粒子在下一时刻的位置,确定虚拟粒子在下一时刻的密度可以包括:根据虚拟粒子在下一时刻的位置确定每个虚拟粒子预设范围内的虚拟粒子数量;根据每个虚拟粒子预设范围内的虚拟粒子数量,计算每个虚拟粒子在下一时刻的密度。
[0245]
本说明书实施例中,每个虚拟粒子预设范围内的虚拟粒子数量可以为以每个虚拟粒子为中心,预设半径形成的范围内的虚拟粒子的数量。在一个可选的实施例中,可以在离屏浮点纹理上,根据每个虚拟粒子在下一时刻的位置依次渲染每个虚拟粒子的预设纹理,得到下一时刻对应的目标纹理,然后以每个虚拟粒子为中心,从下一时刻对应的目标纹理中采样预设范围内的渲染虚拟粒子的次数,得到每个虚拟粒子预设范围内的虚拟粒子数量。
[0246]
在一个具体的实施例中,根据每个虚拟粒子预设范围内的虚拟粒子数量,计算每个虚拟粒子在下一时刻的密度可以包括:
[0247]
在一个可选的实施例中,可以直接将每个虚拟粒子预设范围内的虚拟粒子数量代入虚拟粒子数量与密度间的映射关系,得到每个虚拟粒子在下一时刻的密度。
[0248]
本说明书实施例中,虚拟粒子数量与密度值之间的映射关系如下:
[0249]
float density=exp(0.025*count)
[0250]
其中,density为密度,count为虚拟粒子数量。
[0251]
上述实施例中,结合虚拟粒子在下一时刻的位置,统计出在每个虚拟粒子预设范围内的虚拟粒子数量,并结合虚拟粒子数量与密度间的映射关系,可以实现对虚拟粒子的密度的更新。
[0252]
在另一个可选的实施例中,为了保证后续特效的颜色变化平缓,根据每个虚拟粒子预设范围内的虚拟粒子数量,计算每个虚拟粒子在下一时刻的密度可以包括:
[0253]
根据虚拟粒子数量与密度值之间的映射关系和每个虚拟粒子预设范围内的虚拟粒子数量,确定每个虚拟粒子在下一时刻的初始密度值;
[0254]
将在下一时刻的初始密度值大于等于第一密度阈值的虚拟粒子作为第一虚拟粒子,并将第一密度阈值作为第一虚拟粒子在下一时刻的密度;
[0255]
将在下一时刻的初始密度值小于等于第二密度阈值的虚拟粒子作为第二虚拟粒子,将第二密度阈值作为第二虚拟粒子在下一时刻的密度;
[0256]
将在下一时刻的初始密度值大于第二密度阈值,且小于第一密度阈值的虚拟粒子作为第三虚拟粒子,将第三虚拟粒子在下一时刻的初始密度值作为第三虚拟粒子在下一时刻的密度;
[0257]
其中,第一密度阈值大于第二密度阈值。
[0258]
在一个具体的实施例中,第一密度阈值可以为0.9,第二密度阈值可以为0.1。
[0259]
上述实施例中,通过将虚拟粒子的密度映射到一个预设的区间,可以有效保证后续渲染出的特效,颜色变化平缓,改善仿真效果。
[0260]
在步骤s511中,基于下一时刻的密度、下一时刻的位置和下一时刻的速度,将第一特效更新为目标物质在目标页面流动的第二特效。
[0261]
在一可选的实施例中,基于下一时刻的密度、下一时刻的位置和下一时刻的速度,将第一特效更新为目标物质在目标页面流动的第二特效可以包括
[0262]
根据密度颜色映射关系、下一时刻的密度和下一时刻的位置确定虚拟粒子在下一时刻的颜色信息;
[0263]
基于下一时刻的颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以将第一特效更新为目标物质在目标页面流动的第二特效。
[0264]
可选的,在基于下一时刻的颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以将第一特效更新为目标物质在目标页面流动的第二特效之前,山步骤s511还可以包括:
[0265]
根据下一时刻的速度对虚拟粒子对应的初始形状进行拉伸处理,得到虚拟粒子在下一时刻的目标形状;
[0266]
相应的,基于下一时刻的颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以将第一特效更新为目标物质在目标页面流动的第二特效可以包括基于下一时刻的颜色信息和该下一时刻的目标形状渲染虚拟粒子,以将第一特效更新为目标物质在目标页面流动的第二特效。
[0267]
本说明书实施例中,上述步骤s511的具体细化可以参见上述步骤s105,在此不再赘述。
[0268]
此外,随着时间的推移,特效会不断的更新,但在后续时刻的特效不一定还是从目标关键点流出,结合实际场景需求和实际操作,目标物质可以依然是从目标关键点流出,也可以不从目标关键点流出。
[0269]
上述实施例中,通过将目标页面剖分为包括第二数量个子网格的目标网格,然后结合虚拟粒子的质量、速度、位置、密度等物理属性与目标网格的物理属性间的相互传递,可以模拟下一时刻的特效变化,实现特效的实时更新。
[0270]
在实际应用中,随着时间的推移,可以将上述的下一时刻更新为当前时刻,相应的,在将第一特效更新为目标物质在目标页面流动的第二特效之后之后,上述方法还可以包括:
[0271]
将第一数量个虚拟粒子在下一时刻的质量、动量和位置,分别更新为每个虚拟粒子在更新后的当前时刻的质量、动量和位置,基于每个虚拟粒子在更新后的当前时刻的质量、动量和位置重复上述步骤s501-步骤s511,以将目标物质在目标页面流动的第二特效更新为目标物质在目标页面流动的第三特效。
[0272]
在一个可选的实施例中,液体物质在流动过程中的弹性参数不会变化,但一些固态软体在流动过程中,随着压力的变化,虚拟粒子的弹性参数会变化;具体的,虚拟粒子的体积会随着压力的增加而变小,相应的,杨氏模量和泊松比等弹性参数会变大,物质也会变硬(例如雪越压越硬)。相应的,需要更新虚拟粒子的弹性参数,并在下一时刻用来更新网格的受力信息中的弹力,以实现对各种弹性、弹塑性材料的模拟,相应的,当目标物质为固态软体时,上述方法还可以包括:
[0273]
获取虚拟粒子在更新后的当前时刻的体积;
[0274]
计算虚拟粒子在更新后的当前时刻的体积与初始体积间的比值;
[0275]
根据虚拟粒子的初始弹性参数和对应的比值,计算虚拟粒子在更新后的当前时刻的弹性参数;
[0276]
基于虚拟粒子在更新后的当前时刻的弹性参数更新目标网格的受力信息。
[0277]
在一个可选的实施例中,当弹性参数为杨氏模量和泊松比时;上述更新弹性参数的方案可以结合下述公式实现:
[0278][0279][0280]
其中,表示第p个虚拟粒子在更新后的当前时刻的体积与初始体积间的比值;ξ为预设的比例参数,λ0表示初始泊松比;μ0表示初始杨氏模量;表示第p个虚拟粒子在更新后的当前时刻的杨氏模量;表示第p个虚拟粒子在更新后的当前时刻的泊松比。
[0281]
上述实施例中,结合固态软体在运动过程中,虚拟粒子的体积变化情况,更新物质的杨氏模量和泊松比等弹性参数,可以有效模拟出固态软体物质会随着压力的增加而变小、变硬的属性,大大提升特效的仿真效果。
[0282]
在一个可选的实施例中,虚拟粒子的形变梯度在运动过程中也会产生变化,进而形成对目标网格的弹力,相应的,上述方法还包括:
[0283]
获取虚拟粒子在更新后的当前时刻的角动量矩阵和转动惯量矩阵;
[0284]
根据角动量矩阵、转动惯量矩阵和初始形变梯度,确定虚拟粒子在更新后的当前时刻的形变梯度;
[0285]
基于虚拟粒子在更新后的当前时刻的形变梯度更新目标网格的受力信息。
[0286]
在一个可选的实施例中,确定每个虚拟粒子在更新后的当前时刻的形变梯度可以采用下述公式:
[0287][0288]
其中,表示第p个虚拟粒子在更新后的当前时刻的形变梯度;表示第p个虚拟粒子在更新后的当前时刻的形变梯度;可以为能够表示第一数量个虚拟粒子在更新后的当前时刻的角动量的矩阵(简称角动量矩阵)可以为能够表示第一数量个虚拟粒子在更新后的当前时刻的转动惯量的矩阵(简称转动惯量矩阵);i表示初始形变梯度;δt表示仿真时间步长。
[0289]
具体的,基于虚拟粒子在更新后的当前时刻的形变梯度更新目标网格的受力信息可以参见上步骤s703,在此不再赘述。
[0290]
上述实施例中,结合虚拟粒子在更新后的当前时刻的角动量矩阵、转动惯量矩阵以及初始形变梯度,可以更新虚拟粒子在运动过程中的形变梯度,进而模拟虚拟粒子运动过程中对目标网格的压力(即目标网格受到的弹力)等受力信息的改变情况。
[0291]
上述实施例中,通过将目标页面剖分为包括第二数量个子网格的目标网格,然后结合虚拟粒子的质量、速度、位置、密度等物理属性与目标网格的物理属性间的相互传递,可以模拟不同时刻的特效变化,实现生动的特效仿真。
[0292]
图8是根据一示例性实施例示出的一种特效渲染装置框图。参照图8,该装置包括:
[0293]
初始参数获取模块810,被配置为执行响应于特效渲染触发指令,获取模拟目标物质的虚拟粒子的初始参数,初始参数表征虚拟粒子在初始状态下的布局信息和运动信息;
[0294]
目标关键点确定模块820,被配置为执行确定目标页面中目标对象的目标关键点;
[0295]
特效渲染模块830,被配置为执行基于初始参数渲染虚拟粒子,以生成目标物质从目标关键点流出的第一特效。
[0296]
可选的,初始参数包括初始密度,特效渲染模块830包括:
[0297]
初始位置确定单元,被配置为执行根据目标关键点和初始密度,确定虚拟粒子在目标页面的初始位置;
[0298]
初始颜色信息确定单元,被配置为执行根据密度颜色映射关系、初始密度和初始位置确定虚拟粒子的初始颜色信息,密度颜色映射关系表征每个像素点上的虚拟粒子的平均密度与颜色间的映射关系;
[0299]
特效渲染单元,被配置为执行基于初始颜色信息和虚拟粒子对应的初始形状渲染虚拟粒子,以生成目标物质从目标关键点处流出的第一特效。
[0300]
可选的,上述初始参数还包括初始密度,上述特效渲染模块830还包括:
[0301]
向量转换单元,被配置为执行将虚拟粒子的初始速度的大小和方向转换成由初始位置处出发的目标向量;
[0302]
拉伸处理单元,被配置为执行根据目标向量,对虚拟粒子对应的初始形状进行拉伸处理,得到虚拟粒子的目标形状;
[0303]
特效渲染单元还被配置为执行基于初始颜色信息和目标形状渲染虚拟粒子,以生成目标物质从目标关键点处流出的第一特效。
[0304]
可选的,虚拟粒子包括第一数量个虚拟粒子;初始颜色信息确定单元包括:
[0305]
目标纹理渲染单元,被配置为执行根据每个虚拟粒子在目标页面的初始位置依次渲染每个虚拟粒子的预设纹理,得到目标纹理;
[0306]
密度权重确定单元,被配置为执行从目标纹理提取每个虚拟粒子所在位置的透明度,并将每个虚拟粒子所在位置的透明度作为每个虚拟粒子的密度权重;
[0307]
密度权重之和计算单元,被配置为执行根据第一数量个虚拟粒子的密度权重,计算目标纹理的每个像素点上虚拟粒子的密度权重之和;
[0308]
密度加权之和计算单元,被配置为执行根据第一数量个虚拟粒子的密度权重和第一数量个虚拟粒子的初始密度,计算目标纹理的每个像素点上虚拟粒子的密度加权之和;
[0309]
平均密度确定单元,被配置为执行根据密度权重之和和密度加权之和,确定每个像素点上的平均密度;
[0310]
初始颜色信息确定子单元,被配置为执行根据密度颜色映射关系和每个像素点上的平均密度,确定每个像素点上虚拟粒子的初始颜色信息。
[0311]
可选的,上述初始颜色信息确定单元还包括:
[0312]
预设透明度获取单元,被配置为执行获取每个像素点对应的预设透明度;
[0313]
初始颜色信息更新单元,被配置为执行基于每个像素点对应的预设透明度更新每个像素点上虚拟粒子的初始颜色信息。
[0314]
可选的,上述初始参数还包括:初始粒网传动参数,初始粒网传动参数表征虚拟粒子的物理属性中传递给目标网格的物理属性,目标网格为对目标页面进行网格剖分得到的;上述装置还包括:
[0315]
网格物理属性确定模块,被配置为执行根据虚拟粒子的初始粒网传动参数,确定目标网格在当前时刻的物理属性;
[0316]
网粒传动参数确定模块,被配置为执行根据目标网格在当前时刻的物理属性确定目标网格在当前时刻的下一时刻的网粒传动参数,网粒传动参数表征目标网格的物理属性中传递给所虚拟粒子的物理属性;
[0317]
粒子速度更新模块,被配置为执行基于目标网格在下一时刻的网粒传动参数确定虚拟粒子在下一时刻的速度;
[0318]
粒子位置更新模块,被配置为执行根据虚拟粒子在下一时刻的速度、目标网格在下一时刻的物理属性和初始位置,确定虚拟粒子在下一时刻的位置;
[0319]
粒子密度更新模块,被配置为执行根据虚拟粒子在下一时刻的位置,确定虚拟粒子在下一时刻的密度;
[0320]
第一特效更新模块,被配置为执行基于下一时刻的密度、下一时刻的位置和下一时刻的速度,将第一特效更新为目标物质在目标页面流动的第二特效。
[0321]
可选的,虚拟粒子包括第一数量个虚拟粒子,粒子密度更新模块包括:
[0322]
虚拟粒子数量确定单元,被配置为执行根据虚拟粒子在下一时刻的位置确定每个虚拟粒子预设范围内的虚拟粒子数量;
[0323]
密度计算单元,被配置为执行根据每个虚拟粒子预设范围内的虚拟粒子数量,计算每个虚拟粒子在下一时刻的密度。
[0324]
可选的,密度计算单元包括:
[0325]
初始密度值确定单元,被配置为执行根据虚拟粒子数量与密度值之间的映射关系和每个虚拟粒子预设范围内的虚拟粒子数量,确定每个虚拟粒子在下一时刻的初始密度值;
[0326]
第一密度确定单元,被配置为执行将在下一时刻的初始密度值大于等于第一密度阈值的虚拟粒子作为第一虚拟粒子,并将第一密度阈值作为第一虚拟粒子在下一时刻的密度;
[0327]
第二密度确定单元,被配置为执行将在下一时刻的初始密度值小于等于第二密度阈值的虚拟粒子作为第二虚拟粒子,将第二密度阈值作为第二虚拟粒子在下一时刻的密度;
[0328]
第三密度确定单元,被配置为执行将在下一时刻的初始密度值大于第二密度阈值,且小于第一密度阈值的虚拟粒子作为第三虚拟粒子,将第三虚拟粒子在下一时刻的初始密度值作为第三虚拟粒子在下一时刻的密度;
[0329]
其中,第一密度阈值大于第二密度阈值。
[0330]
可选的,目标网格包括第二数量个子网格;初始传动参数包括:初始质量和初始动量;物理属性包括质量和动量,虚拟粒子包括第一数量个虚拟粒子,网格物理属性确定模块包括:
[0331]
关联网格确定单元,被配置为执行将每个虚拟粒子所处子网格,以及与所处子网格相邻的子网格作为与每个虚拟粒子关联的子网格;
[0332]
关联虚拟粒子确定单元,被配置为执行将每个虚拟粒子作为与每个虚拟粒子关联的子网格的关联虚拟粒子;
[0333]
传动影响因素计算单元,被配置为执行根据移动最小二乘法,计算每个虚拟粒子对与每个虚拟粒子关联的子网格的传动影响因素;
[0334]
质动量计算单元,被配置为执行根据每个子网络的关联虚拟粒子的初始质量、初始动量和对应的传动影响因素,计算每个子网络在当前时刻的质量和动量。
[0335]
可选的,上述初始传动参数还包括:初始形变梯度、初始体积和初始弹性参数;上述物理属性还包括受力信息;上述网格物理属性确定模块还包括:
[0336]
相对距离计算单元,被配置为执行计算当前时刻每个子网格的关联虚拟粒子与每个子网格间的相对距离;
[0337]
弹力确定单元,被配置为执行基于预设弹性模型、每个子网格对应的相对距离、每个子网格的关联虚拟粒子的初始体积、初始形变梯度以及初始弹性参数,确定每个子网格在当前时刻的弹力;
[0338]
重力计算单元,被配置为执行根据每个子网格在当前时刻的质量和重力加速度,计算每个子网格在当前时刻的重力;
[0339]
受力信息确定单元,被配置为执行将第二数量个子网格在当前时刻的重力和弹力作为目标网格在当前时刻的受力信息。
[0340]
可选的,上述网格物理属性确定模块还包括:
[0341]
方向偏移信息获取单元,被配置为执行获取目标网格对应的方向偏移信息;
[0342]
重力加速度更新单元,被配置为执行根据方向偏移信息更新每个子网格在当前时刻的重力加速度,得到每个子网格在当前时刻的更新后的重力加速度;
[0343]
重力计算单元还被配置为执行根据每个子网格在当前时刻的质量和更新后的重力加速度,计算每个子网格在当前时刻的重力。
[0344]
可选的,在基于下一时刻的密度、下一时刻的位置和下一时刻的速度,将第一特效更新为目标物质在目标页面流动的第二特效之后,将下一时刻更新为当前时刻,上述装置还包括:
[0345]
参数更新模块,被配置为执行将虚拟粒子在下一时刻的速度、密度和位置,分别更新为虚拟粒子在更新后的当前时刻的速度、密度和位置;
[0346]
第二特效更新模块,被配置为执行基于虚拟粒子在更新后的当前时刻的速度、密度和位置重复上述根据虚拟粒子的初始传动参数,确定目标网格在当前时刻的物理属性至基于下一时刻的密度、下一时刻的位置和下一时刻的速度,将第一特效更新为目标物质在目标页面流动的第二特效的步骤,以将第二特效更新为目标物质在目标页面流动的第三特效。
[0347]
可选的,初始参数还包括初始弹性参数,当目标物质为固态软体时,上述装置还包括:
[0348]
体积获取模块,被配置为执行获取虚拟粒子在更新后的当前时刻的体积;
[0349]
体积比计算模块,被配置为执行计算虚拟粒子在更新后的当前时刻的体积与初始体积间的比值;
[0350]
弹性参数更新模块,被配置为执行根据虚拟粒子的初始弹性参数和对应的比值,计算虚拟粒子在更新后的当前时刻的弹性参数;
[0351]
第一受力信息更新模块,被配置为执行基于虚拟粒子在更新后的当前时刻的弹性参数更新目标网格的受力信息。
[0352]
可选的,初始参数还包括初始形变梯度,上述装置还包括:
[0353]
矩阵获取模块,被配置为执行获取虚拟粒子在更新后的当前时刻的角动量矩阵和转动惯量矩阵;
[0354]
形变梯度确定模块,被配置为执行根据角动量矩阵、转动惯量矩阵和初始形变梯度,确定虚拟粒子在更新后的当前时刻的形变梯度;
[0355]
第二受力信息更新模块,被配置为执行基于虚拟粒子在更新后的当前时刻的形变梯度更新目标网格的受力信息。
[0356]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0357]
图9是根据一示例性实施例示出的一种用于特效渲染的电子设备的框图,该电子设备可以是终端,其内部结构图可以如图9所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图像瑕疵填充网络确定或图像瑕疵处理的方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键
盘、触控板或鼠标等。
[0358]
本领域技术人员可以理解,图9中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0359]
在示例性实施例中,还提供了一种电子设备,包括:处理器;用于存储该处理器可执行指令的存储器;其中,该处理器被配置为执行该指令,以实现如本公开实施例中的特效渲染方法。
[0360]
在示例性实施例中,还提供了一种存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例中的特效渲染方法。
[0361]
在示例性实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本公开实施例中的特效渲染方法。
[0362]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom (prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram 以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路 (synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0363]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0364]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1