CN114004920A - 一种在画面中添加火焰特效的方法和装置 - Google Patents
一种在画面中添加火焰特效的方法和装置 Download PDFInfo
- Publication number
- CN114004920A CN114004920A CN202111183954.7A CN202111183954A CN114004920A CN 114004920 A CN114004920 A CN 114004920A CN 202111183954 A CN202111183954 A CN 202111183954A CN 114004920 A CN114004920 A CN 114004920A
- Authority
- CN
- China
- Prior art keywords
- flame
- special effect
- dimensional model
- layer
- image
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种在画面中添加火焰特效的方法和装置,用以解决如何在准确表现物体表面视觉效果的同时,降低耗费的硬件资源的问题。本申请方案包括:获取待添加火焰特效的三维模型;在三维模型的至少部分表面设置至少一个火焰源;将包含至少一个火焰源的三维模型投影至目标特效平面;基于预设火焰模拟算法和目标特效平面中的至少一个火焰源生成火焰特效图层;将火焰特效图层与三维模型进行叠加渲染,得到添加火焰特效后的画面。本发明实施例的方案,将三维模型投影至二维图像上进行火焰特效处理,能有效降低图像处理所需耗费的资源,将三维图像投影到二维平面上进行处理,实现数据降维,有利于实现实时特效添加。
Description
技术领域
本发明涉及图像处理领域,尤其涉及一种在画面中添加火焰特效的方法和装置。
背景技术
在图像处理领域,可以通过在物体图像上叠加火焰图像的方式来模拟物体着火的特效。在部分应用场景中,需要对三维模型添加火焰特效。但三维模型相对于二维图像更加复杂,添加火焰特效需要更高的处理能力和更长的处理时间,不利于实现及时特效添加。
如何在准确表现物体表面视觉效果的同时,降低耗费的硬件资源,是本申请所要解决的技术问题。
发明内容
本申请实施例的目的是提供一种在画面中添加火焰特效的方法和装置,用以解决如何在准确表现物体表面视觉效果的同时,降低耗费的硬件资源问题。
第一方面,提供了一种在画面中添加火焰特效的方法,包括:
获取待添加火焰特效的三维模型;
在所述三维模型的至少部分表面设置至少一个火焰源,所述至少一个火焰源用于生成火焰特效;
将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的所述目标特效平面中包括至少一个模型图层,所述模型图层包括所述三维模型投影得到的二维模型图像和分布在所述二维模型图像上的至少一个火焰源,所述至少一个模型图层表征所述三维模型至少一个表面的遮挡关系;
基于预设火焰模拟算法和所述目标特效平面中的至少一个火焰源生成火焰特效图层,所述火焰特效图层包括至少一个火焰图像,所述预设火焰模拟算法用于根据所述至少一个火焰源的位置生成火焰图像;
将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面。
第二方面,提供了一种在画面中添加火焰特效的装置,包括:
获取模块,获取待添加火焰特效的三维模型;
设置模块,在所述三维模型的至少部分表面设置至少一个火焰源,所述至少一个火焰源用于生成火焰特效;
投影模块,将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的所述目标特效平面中包括至少一个模型图层,所述模型图层包括所述三维模型投影得到的二维模型图像和分布在所述二维模型图像上的至少一个火焰源,所述至少一个模型图层表征所述三维模型至少一个表面的遮挡关系;
生成模块,基于预设火焰模拟算法和所述目标特效平面中的至少一个火焰源生成火焰特效图层,所述火焰特效图层包括至少一个火焰图像,所述预设火焰模拟算法用于根据所述至少一个火焰源的位置生成火焰图像;
渲染模块,将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面。
第三方面,提供了一种电子设备,该电子设备包括处理器、存储器及存储在该存储器上并可在该处理器上运行的计算机程序,该计算机程序被该处理器执行时实现如第一方面的方法的步骤。
第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器执行时实现如第一方面的方法的步骤。
在本申请实施例中,通过获取待添加火焰特效的三维模型;在所述三维模型的至少部分表面设置至少一个火焰源,所述至少一个火焰源用于生成火焰特效;将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的所述目标特效平面中包括至少一个模型图层,所述模型图层包括所述三维模型投影得到的二维模型图像和分布在所述二维模型图像上的至少一个火焰源,所述至少一个模型图层表征所述三维模型至少一个表面的遮挡关系;基于预设火焰模拟算法和所述目标特效平面中的至少一个火焰源生成火焰特效图层,所述火焰特效图层包括至少一个火焰图像,所述预设火焰模拟算法用于根据所述至少一个火焰源的位置生成火焰图像;将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面。本发明实施例的方案,将三维模型投影至二维图像上进行火焰特效处理,实现数据降维,能在准确表现物体表面视觉效果的同时,有效降低耗费的硬件资源,降低显存消耗。降低添加火焰特效所需的处理性能,能缩短特效处理时间,有利于实现实时特效添加。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之一;
图2是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之二;
图3是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之三;
图4是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之四;
图5是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之五;
图6是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之六;
图7是本发明的一个实施例一种在画面中添加火焰特效的方法的流程示意图之七;
图8是本发明的一个实施例一种在画面中添加火焰特效的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本申请中附图编号仅用于区分方案中的各个步骤,不用于限定各个步骤的执行顺序,具体执行顺序以说明书中描述为准。
在图像处理领域,往往需要对图片、视频添加特效,以提升画面的视觉效果。火焰特效是视觉特效中较常应用的特效类型,在为图像中的物体添加火焰特效后,能使物体看起来处于着火的状态。
在实际应用中,存在为三维模型添加火焰特效的应用场景。其中,三维模型是由基本图形元素(点、线、面)构成的还原现实世界三维物体视觉表现的计算机数据,具体可以在软件内构建生成。如果要在三维模型表面添加火焰特效,可以在模型表面附近生成一些火焰的序列帧二维片,并让这些二维片始终面向视角,该视角可以是观看者所在的角度,即二维片始终面向观看者。通过这种方式,虽然能够实现添加火焰特效,但对于表面结构比较复杂的三维模型,火焰二维片的视觉真实感较差,往往会出现“穿帮”的情况。
具体而言,若火焰的序列帧二维片过于稀疏,面积过大,会导致模型穿插,火焰的片状感明显。若火焰的序列帧二维片过于密集,面积过小,会导致火焰苗过小,看起来不真实,原模型细节基本看不清,基本只能用于一些风格化表现。另外,如果使用精确的模拟方法计算火焰效果,由于所需的计算量较大,所以很难应用到实时渲染中。而且,三维图像的数据量比二维图像的数据量更大,处理过程中如要保证处理精度则需要占用较多显存空间。与二维图像相比,三维图像处理过程中占用的显存空间有指数级增长,大部分显卡硬件难以接受。
为了解决现有技术中存在的问题,本申请实施例提供一种在画面中添加火焰特效的方法,如图1所示,包括以下步骤:
S11:获取待添加火焰特效的三维模型。
在实际应用中,可以根据实际需求选用合适的三维模型应用来执行本步骤。在本实施例中,在ComputeShader(CS)中执行。ComputeShader是一种图形显卡中的可编程运算单元。Shader可以指图形显卡中运行的程序,或运行上述程序的显卡运算单元。
在本步骤中,在CS中载入要添加火焰特效的三维模型,另外,还可以输入该模型光照计算所需的颜色、法线、PBR(Physicallly-Based Rendering)贴图等所需的参数或组件。载入的三维模型具体包括模型的顶点、三角面等基本图形元素。
S12:在三维模型的至少部分表面设置至少一个火焰源,至少一个火焰源用于生成火焰特效。
三维模型往往包括多个表面,这里所说的表面可以是平面也可以是弧面。本步骤中设置的火焰源用于生成火焰特效,用以模拟展现三维模型表面着火的视觉效果。
可选的,本步骤中设置的火焰源可以将三维模型的顶点、三角面作为基准位置,基于三维模型的至少部分表面均匀设置火焰源,根据实际需求设置合适数量的火焰源点。
举例而言,可以基于预设间隔、预设点阵位置来布设上述至少一个火焰源。本步骤中的火焰源可以作为随后步骤中火焰模拟算法的输入,是模拟火焰特效需要的计算起始点。在设置火焰点时,可以模拟真实世界火焰燃烧对应的位置进行设置。
S13:将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的目标特效平面中包括至少一个模型图层,模型图层包括三维模型投影得到的二维模型图像和分布在二维模型图像上的至少一个火焰源,至少一个模型图层表征三维模型至少一个表面的遮挡关系。
上述目标特效平面可以理解为是朝向观众视角的平面,将三维模型向这个目标特效平面投影,能够将观众看到的三维模型平面化,即以二维的形式来展现观众看到的三维模型的外观。投影之后,目标特效平面中包括以二维形式展现的三维模型图像,以及分布在三维模型图像上的至少一个火焰源。
其中,可以根据观众观看的角度来设置一个或多个模型图层,用于将三维模型投射到模型图层上,从而在模型图层上展现观众看到的三维模型的二维模型图像。
具体而言,在将三维模型及上述火焰源投影至目标特效平面的步骤中,可以包括坐标变换、光栅化、光影着色等。这些步骤可以基于上述步骤S11中输入的三维模型、颜色、发现、PBR贴图等,使用CS完成投影的步骤。
上述光栅化是指将实数空间的模型上的点投影到二维平面的离散像素点的过程,一般通过显示设备硬件实现,本实施例中在软件中实现这一过程。
本实施例提供的方案中,执行投影的步骤可以还原通用渲染管线的基本流程。该通用渲染管线流程是指将模型渲染到屏幕的过程,执行一系列固定功能的shader。在现代图形学中该过程可以包括坐标变换、光栅化、光影着色。随着技术发展存在一定的变体,本实施例中在ComputeShader中实现上述过程。
可选的,如果场景中包含有多个物体,则可以根据多个物体的三维坐标执行空间变换,进而确定各个物体所对应的像素点的深度。可以通过深度图像来表示各个像素点的深度,用于处理多个物体之间的遮挡关系或其他颜色混合,以实现更优的视觉效果。
可选的,目标特效平面中可以设置多个图层,这些图层用于展现三维模型不同平面之间的前后遮挡关系。进而在生成火焰图像之后,能够通过叠加渲染实现火焰与物体的遮挡效果,提高视觉效果的真实性。尤其适用于对包含有透明材质的模型,能够更真实地展现透明物体的外观。
S14:基于预设火焰模拟算法和目标特效平面中的至少一个火焰源生成火焰特效图层,火焰特效图层包括至少一个火焰图像,预设火焰模拟算法用于根据至少一个火焰源的位置生成火焰图像。
本实施例中应用的预设火焰模拟算法可以是用于模拟生成二维火焰图像的模拟算法。使用火焰模拟算法可以考虑空间中的物体的存在并作出回应,使得火焰可以绕开物体、随风飘动等。举例而言,预设火焰模拟算法可以根据预设的参数或者在步骤S11中输入的参数基于火焰点的位置生成火焰图像。这里用到的参数可以包括浮力参数、风速参数、重力参数、火焰颜色参数等等,本申请实施例对此不做限定。
火焰特效图层的数量可以是一个或多个,该火焰特效图层可以基于目标特效平面中模型图层的遮挡关系生成。举例而言,当火焰特效图层的数量是多个时,在靠近观众的、三维物体前的火焰源生成的火焰特效图层位于模型图层上,远离观众的、三维物体后的火焰源生成的火焰特效图层位于模型图层下,这样,在随后的叠加渲染步骤后,能够实现前方火焰遮挡物体,且物体遮挡后方火焰的层叠遮挡效果,有利于提高视觉效果真实性。
可选的,也可以通过一个模型图层来展现三维模型多个表面的遮挡关系。比如,在模型图层的各个像素上设置距离参数,该距离参数用于表征该像素点所展现的三维模型平面与观众的相对距离。举例而言,靠近观众的三维模型平面所对应的像素点的距离参数较小,远离观众的、被其他平面遮挡的三维模型平面所对应的像素点的距离参数较大。这样能通过一个模型图层表征三维模型至少一个表面的遮挡关系。
通过本步骤,能基于至少一个火焰源生成火焰特效图层。其中,火焰特效图层的各个像素点可以具有透明度,用于随后与三维模型进行叠加渲染。
S15:将火焰特效图层与三维模型进行叠加渲染,得到添加火焰特效后的画面。
上述目标特效平面中的三维模型可以预先使用通用渲染管线进行渲染,使三维模型本身的遮挡、阴影等信息能在本步骤中的渲染步骤中所使用,使添加火焰特效后的画面中能展现出遮挡、阴影等效果。在执行叠加渲染的步骤中,将上述步骤中的火焰图像和三维模型进行叠加渲染,使三维模型和火焰特效的图像渲染融合,使添加火焰特效后的画面能够展现逼真的三维模型着火的视觉效果。
通过本申请实施例提供的方案,将三维模型投影至二维平面上添加火焰特效,能有效降低为三维模型添加特效所需消耗的计算量以及对显存的消耗,提高火焰特效添加即时性,能够在准确表现物体表面火焰视觉效果的同时,有效降低耗费的硬件资源。而且,本方案在目标特效平面上分图层生成火焰图像,进而将火焰图像与三维模型叠加渲染,能有效降低图像处理所需耗费的资源,将三维图像投影到二维平面上进行处理,实现数据降维。另外,由于本方案具有计算量低、效果逼真的优点,能有利于即时添加火焰图像,可以广泛应用于人机互动的应用场景中。
本申请实施例提供的方案基于火焰源生成火焰特效,上述火焰源具体可以指用于生成火焰特效所需的信息。举例而言,火焰源具体包括表征火焰源位置的信息、表征火焰源所在位置及其附近的温度信息、表征火焰源透明度的密度信息等。火焰源包含的信息均可以用于生成该火焰源对应的火焰图像,用以模拟真实火焰的视觉效果。
实际应用中,可以基于本实施例提供的方案生成动态图像或视频等包含有多个时序帧的画面,用来展现火焰动态跳动、火焰蔓延燃烧的效果。其中,可以先对第一帧画面添加火焰特效,然后,基于添加火焰特效后的第一帧画面生成基于时序相邻的第二帧画面。其中,第一帧画面中具体可以包含各个像素的温度、密度等信息。在对第二帧画面添加火焰特效的过程中,基于第一帧画面中的各个像素的温度、密度等信息生成第二帧画面的火焰特效图像。
其中,在不加入新的火焰源、不增加助燃因素的情况下,火焰往往会衰减,即着火面积缩小、火苗变小等,最终火焰将会熄灭。上述火焰衰减的效果可以基于火焰模拟算法生成。
如果需要火焰持续燃烧并蔓延,可以通过添加新的火焰源来实现。举例而言,在为第二帧画面添加火焰特效的步骤中,基于第一帧画面添加新的火焰源,用以弥补第一帧画面中火焰的衰减,使火焰持续燃烧。另外,可以通过增加新的火焰源使火焰蔓延。基于第一帧画面以及在第二帧画面中新添加的火焰源,重复执行本申请实施例中提供的步骤即可完成对第二帧画面的火焰特效的添加。通过重复上述步骤即可生成基于时序的多帧连续的火焰画面,从而生成火焰的动态图像。
其中,在第二帧画面中新添加的火焰源可以是人工添加的,也可以基于算法规则自动生成的。具体而言,可以基于燃烧物体的材质、周围的温度、风向、湿度等多种因素来确定新添加的火焰源的数量与位置。另外,也可以在受到外力或其他条件下停止添加新的火焰源。
以第二帧画面为例,上述新添加的火焰源与第一帧画面中包含的温度、密度等信息可以相互叠加混合。在为第二帧画面添加火焰+特效的过程中,基于上述混合后的信息来生成火焰图像即可。
基于上述实施例提供的方案,可选的,如图2所示,在上述步骤S12之前,还包括:
S21:获取与三维模型的至少一个表面相匹配的特效图层,特效图层包括待设置火焰源的区域。
本步骤中获取的特效图层也可以称为Mask,具体可以是一张贴图,贴图中的各个像素点设置有0或1,用以区分哪些区域是设置火焰源的区域。比如,数值为1的像素点可以设置火焰源,数值为0的像素点不设置火焰源。随后,基于该特效图层,可以在数值为1的区域内均匀设置火焰源。
再或者,Mask贴图中的各个像素点也可以是0到1之间的连续值,设置在像素点上的值用于表示在该像素点上生成火焰源的概率。随后,基于该特效图层上各个像素点对应的概率设置火焰源。
本步骤中的贴图与三维模型的其他贴图的UV(纹理坐标)分布相同,这里所说的纹理坐标通常具有U和V两个坐标轴,因此也称之为UV坐标。U代表横向坐标上的分布,V代表纵向坐标上的分布。它定义了图片上每个点的位置的信息,这些点与三维模型是相互联系的,以决定表面纹理贴图的位置。
S22:根据特效图层确定三维模型的表面中的待设置火焰源的特效区。
由于上述步骤中的贴图与三维模型的表面具有对应关系,对于三维模型的顶点、三角面的UV,在贴图中都具有相对应的参数值。根据贴图中的参数值即可确定哪些区域是要设置火焰源的特效区。
其中,上述步骤S12,包括:
S23:在三维模型的特效区内设置至少一个火焰源。
本步骤中,可以在上述步骤的特效区内均匀生成火焰源,也可以基于特效区相对应贴图中的各个参数值来确定特效区内各个像素点设置火焰源的概率,从而按照预设的疏密度在三维模型的特效区内设置火焰源。
通过本申请实施例提供的方案,能够有效设置哪些区域能添加火焰特效的火焰源。在实际应用中,有利于模拟火焰真实燃烧的效果。例如,金属材质的物体往往无法被点燃,通过本实施例提供的方案,能够通过特效图层对金属物体所在位置进行“遮盖”,以避免在金属物体所在位置生成火焰源,使添加特效后的图像更真实。
基于上述实施例提供的方案,可选的,目标特效平面还包括深度图像,该深度图像表征二维模型图像的各个像素投影前的深度,如图3所示。
在实际应用中,需要添加火焰特效的物体通常不是单独存在的,而是设置在一个场景中的。该物体可能被前景物体遮挡,也可能遮挡背景物体。
在本实施例中,目标特效平面中包括深度图像,该深度图像中包含的像素点表征各个像素点投影前的深度。举例而言,各个像素点的颜色值、亮度值或其他参数值可以用于表征这个像素点投影前与观众之间的距离。比如说,参数值越大则表明这个像素点投影前距离观众越远,参数值越小则越近。
其中,S15,包括:
S31:根据深度图像表征的二维模型图像的各个像素投影前的深度,将火焰特效图层与三维模型进行叠加渲染,得到添加火焰特效后的画面。
在执行叠加渲染的步骤中,不仅要将生成的火焰图像与三维模型渲染融合,还可以基于深度图像表征的各个像素投影前的深度在渲染过程中参考遮挡关系执行渲染。具体的,通过比较深度的大小来决定是否渲染当前像素、覆盖当前像素等,提高特效画面的真实性。
另外,如果三维模型是半透明的,在本实施例中可以用上述深度图像中的深度值来作为依据,确定火焰与三维模型的遮挡关系,用于实现火焰特效图层与半透明的三维模型的叠加渲染。具体而言,深度值小(更接近观众)的部分的火焰会向深度值大的区域流动得更多一些,以实现火焰与着火的模型之间不会穿模的着火效果。
基于上述实施例提供的方案,可选的,如图4所示,上述步骤S14,包括:
S41:将至少一个火焰源输入预设火焰模拟算法,以得到预设火焰模拟算法的输出结果。
在本申请实施例中,上述至少一个火焰源可以通过在像素点上设置温度值、密度值的方式来展现。举例而言,预设火焰源所在像素点的温度值和密度值。将包含上述温度值和密度值的模型图层输入预设火焰模拟算法。该火焰模拟算法对模型图层中的每个像素点基于预设规则进行一次处理,具体的,依据相邻的上下左右像素点的温度值和密度值确定输出的中心的像素点的温度值和密度值。比如原像素点温度为T,上下左右的像素点为T1、T2、T3、T4,最终的输出的温度值可以为T0+A*(T1+T2+T3+T4-4*T0),其中A为可调的系数。同理,也可以基于上述规则确定像素点的密度值。可选的,还可以根据能量衰减或其他规则对经过上述步骤处理得到的各像素点的温度值与密度值做进一步处理。
在实际应用中,上述处理过程中相邻的各像素点相互影响,相邻像素点的数值相差越大,影响程度也越大。基于本实施例提供的方案,拥有较高数值(温度值或密度值)的像素点会向相邻数值较低的像素点“流动”,“流动”的速度与差值正相关。
S42:根据输出结果确定火焰特效图层中各个像素点的属性值,所述属性值包括颜色值和透明度。
具体的,各像素点的颜色值可以根据上述实例中的温度值确定,透明度可以根据上述实例中的密度值确定。除此之外,还可以根据三维物体的材质或其他参数共同确定颜色值。
基于上述实施例提供的方案,可选的,如图5所示,所述属性值还包括温度值和密度值,上述步骤S42,包括:
S51:根据输出结果确定火焰特效图层中目标像素点所在位置的温度值和密度值。
S52:根据目标像素点所在位置的温度值确定目标像素点的颜色值,以及,根据目标像素点所在位置的密度值确定目标像素点的透明度。
通过本申请实施例提供的方案,通过预设火焰模拟算法来确定各像素点的颜色值和透明度,使生成的火焰图像更加真实。像素点的颜色值和透明度能用于在随后的步骤中与三维模型进行叠加渲染,使添加火焰特效后的画面更逼真。
基于上述实施例提供的方案,如图6所示,上述步骤S41,包括:
S61:将包括所述至少一个火焰源的输入图层输入所述预设火焰模拟算法,得到所述预设火焰模拟算法输出的经过至少一次迭代处理的输出图层,其中,所述输入图层包括各个像素点的属性值,所述输出图层中的目标像素点的属性值根据所述目标像素点在所述输入图层中相对应的像素点在所述输入图层中的属性值确定。
本步骤中,预设火焰模拟算法可以对输入图层执行多次迭代处理。举例而言,将包含至少一个火焰源的输入图层输入到预设火焰模拟算法中,得到经过首次处理的第一输出图层。然后,将第一输出图层输入预设火焰模拟算法中,得到经过一次迭代处理的第二输出图层。
在不考虑环境因素的情况下,输出图层中的目标像素点与输入图层中相对应的像素点位置可以相同。而在环境中有风或其他因素的情况下,输出图层中的目标像素点与输入图层中相对应的像素点的位置可以不同。比如,输入图层中的各个像素点随风向整体移动,进而基于预设火焰模拟算法得到输出图层中各个像素点的属性值。
在上述迭代处理的过程中,对于某个目标像素点,先在输入图层中确定该像素点与相邻的上下左右四个像素点的模型图层的透明度差值O1、O2、O3、O4,这样原温度值的公式可以变为T0+A*((T1-T0)*abs(1-O1)+(T2-T0)*abs(1–O2)+(T3-T0)*abs(1–O3)+(T4-T0)*abs(1–O4)-4*T0),其中,abs是绝对值,透明度的取值可以为0或1,1表示当前像素位置存在三维模型渲染得到的像素值,0表示不存在。以计算得到输出图层中的目标像素点的温度值。这样透明度低的位置的火焰不会流动到透明度高的位置(从而实现火焰碰到模型表面不继续流动),而透明度高的位置之间可以互相流通火焰,并且透明度高的位置可以向透明度低的位置流通火焰。
可选的,也可以基于模型图层中的深度值来确定目标像素点向周围流通火焰的速率。举例而言,在不考虑环境因素的情况下,目标像素点向所在平面内各个方向流通火焰的速率可以相同。而如果火焰要流通到另一个平面上,则火焰流通的速率往往会发生变化。火焰流通的速率具体可以根据模型图层中的深度值确定。基于上述深度值来生成火焰特效,能使生成的火焰特效更接近于真实的火焰燃烧视觉效果。
另外,还可以基于能量守恒对输出结果做进一步处理。在一些情况下,除了基于相邻的上下左右四个像素点确定目标像素点的属性值以外,也可以根据以目标像素点为中心,一定距离以内的更多像素点共同确定目标像素点的属性值。
S62:将经过至少一次迭代处理的输出图层确定为所述预设火焰模拟算法的输出结果。
在实际应用中,上述迭代处理过程可以重复执行数十次,以得到经过数十次迭代处理的输出图层,这样输出的图层能更真实地反映火焰的视觉效果。
可选的,当场景中包含有多个物体时,可以先对场景中不需要添加火焰特效的物体、前景、背景渲染处理到屏幕。在该渲染处理完成后再对需要添加火焰特效的物体执行渲染,在渲染需要添加火焰特效的物体的过程中,通过投影至目标特效平面的方式实现数据降维,降低添加火焰特效过程中所需的硬件消耗。随后将具有火焰特效的目标特效平面和之前已经渲染到屏幕的图像混合渲染。其中,可以通过空间坐标变换来获得目标特效平面的某个像素点所处的屏幕空间的像素点的坐标,进而确定该像素点的深度,用于处理其他物体之间的遮挡关系或进行透明颜色混合,以优化视觉效果。
基于上述实施例提供的方案,可选的,如图7所示,在步骤S15之后,还包括:
S71:确定添加火焰特效后的画面对应的第一帧。
本申请实施例提供的方案不仅能够实现为图像添加火焰特效,还可以应用于包含多帧的视频中。进一步的,还可以应用于人机互动画面的实时火焰特效添加。在本步骤中,可以将添加火焰特效后的画面确定为第一帧的画面,该第一帧可以对应于一个时间戳,用以表征第一帧的画面在视频中的时序位置。
S72:根据第一帧的画面生成与第一帧相邻的第二帧的画面,第二帧的画面中包括与第一帧的画面关联的火焰特效,第二帧的画面中的火焰特效根据第一帧的画面中的各个像素点的温度值和/或密度值生成。
在本步骤中,可以应用上述任一实施例提供的方案,基于第一帧处理得到第二帧的画面。具体的,可以基于第一帧的各个像素的属性值通过预设火焰模拟算法生成第二帧的画面,使第二帧与第一帧相关联,从而生成动态火焰特效,能够生成火焰特效视频或动态图。上述第一帧和第二帧可以指序列帧,具体是指将动态视觉表现录制为一系列按时间排序的图片,将这些图片按照时序显示,能以较低的成本实现更为复杂的视觉效果。
在实际应用中,还可以根据火势大小、火势蔓延的方向基于第一帧的画面添加新的火焰源,即根据第一帧的画面以及新添加的火焰源来生成第二帧的画面,从而使第二帧画面中的火势相对于第一帧画面中的火势更大,或者,使火焰持续燃烧。另外,如果需要火势逐渐减小,则可以不添加新的火焰源,基于火焰模拟算法逐帧生成的火焰将逐渐减小。
其中,第一帧与第二帧的时间差可以根据需求预先设定。在有风的环境下,火焰往往随风向蔓延,上述时间差可以与风速相关联。另外,还可以设置有更多的环境、模型的相关参数,以提高模拟结果的准确性。
本步骤中生成第二帧画面中火焰特效的具体步骤可以与生成第一帧画面中火焰特效的具体步骤相同。具体的,生成第二帧的画面的火焰特效的步骤可以包括:将三维模型投影至目标特效平面,投影后的目标特效平面中包括至少一个模型图层,模型图层包括三维模型投影得到的二维模型图像,至少一个模型图层表征三维模型至少一个表面的遮挡关系;基于预设火焰模拟算法和第一帧的画面中的各个像素点的温度值和密度值生成火焰特效图层,火焰特效图层包括至少一个火焰图像,预设火焰模拟算法用于根据第一帧的画面中的各个像素点的温度值和密度值生成火焰图像;将火焰特效图层与三维模型进行叠加渲染,得到添加火焰特效后的画面。可选的,预设火焰模拟算法在生成第二帧的画面的火焰图像的步骤中,也可以根据上述第一帧的画面中的各个像素点的温度值、密度值以及新添加的火焰源共同生成第二帧的画面的火焰图像。
其中,可以根据第一帧的画面中的各个像素点的温度值,在生成第二帧的画面的过程中对三维模型进行处理。例如,基于火焰点的位置,消耗三维模型的体积,实现火焰燃烧消耗材质的视觉效果。具体而言,可以在进行三维模型的光影计算的过程中,输入第一帧的火焰计算结果进行校正,并储存这一结果到第二帧。通过本申请实施例提供的方案,不仅能够实现为三维模型画面添加火焰特效,生成动态图像或视频。还能够实现火焰消耗三维物体材质的视觉效果,使火焰燃烧效果更加真实。
本申请实施例提供的方案应用二维平面上的火焰模拟算法实现,相较三维空间的火焰模拟算法,本申请实施例提供的方案计算复杂度更低,更契合现代显卡设计结构,且静态视觉效果并无明显差异。
为了解决现有技术中存在的问题,本申请实施例还提供一种在画面中添加火焰特效的装置80,如图8所示,包括:
获取模块81,获取待添加火焰特效的三维模型;
设置模块82,在三维模型的至少部分表面设置至少一个火焰源,至少一个火焰源用于生成火焰特效;
投影模块83,将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的目标特效平面中包括至少一个模型图层,模型图层包括三维模型投影得到的二维模型图像和分布在二维模型图像上的至少一个火焰源,至少一个模型图层表征三维模型至少一个表面的遮挡关系;
生成模块84,基于预设火焰模拟算法和目标特效平面中的至少一个火焰源生成火焰特效图层,火焰特效图层包括至少一个火焰图像,预设火焰模拟算法用于根据至少一个火焰源的位置生成火焰图像;
渲染模块85,将火焰特效图层与三维模型进行叠加渲染,得到添加火焰特效后的画面。
通过本申请实施例提供的装置,获取待添加火焰特效的三维模型;在三维模型的至少部分表面设置至少一个火焰源,至少一个火焰源用于生成火焰特效;将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的目标特效平面中包括至少一个模型图层,模型图层包括三维模型投影得到的二维模型图像和分布在二维模型图像上的至少一个火焰源,至少一个模型图层表征三维模型至少一个表面的遮挡关系;基于预设火焰模拟算法和目标特效平面中的至少一个火焰源生成火焰特效图层,火焰特效图层包括至少一个火焰图像,预设火焰模拟算法用于根据至少一个火焰源的位置生成火焰图像;将火焰特效图层与三维模型进行叠加渲染,得到添加火焰特效后的画面。本发明实施例的方案,将三维模型投影至二维平面上添加火焰特效,能有效降低为三维模型添加特效所需消耗的计算量以及对显存的消耗,提高火焰特效添加即时性,能够在准确表现物体表面火焰视觉效果的同时,有效降低耗费的硬件资源。而且,本方案在目标特效平面上分图层生成火焰图像,进而将火焰图像与目标特效平面的其他图像叠加渲染,能有效降低图像处理所需耗费的资源,将三维图像投影到二维平面上进行处理,实现数据降维。另外,由于本方案具有计算量低、效果逼真的优点,能有利于即时添加火焰图像,可以广泛应用于人机互动的应用场景中。
优选的,本发明实施例还提供一种电子设备,包括处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述一种在画面中添加火焰特效的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述一种在画面中添加火焰特效的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (10)
1.一种在画面中添加火焰特效的方法,其特征在于,包括:
获取待添加火焰特效的三维模型;
在所述三维模型的至少部分表面设置至少一个火焰源,所述至少一个火焰源用于生成火焰特效;
将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的所述目标特效平面中包括至少一个模型图层,所述模型图层包括所述三维模型投影得到的二维模型图像和分布在所述二维模型图像上的至少一个火焰源,所述至少一个模型图层表征所述三维模型至少一个表面的遮挡关系;
基于预设火焰模拟算法和所述目标特效平面中的至少一个火焰源生成火焰特效图层,所述火焰特效图层包括至少一个火焰图像,所述预设火焰模拟算法用于根据所述至少一个火焰源的位置生成火焰图像;
将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面。
2.如权利要求1所述的方法,其特征在于,在所述三维模型的至少部分表面设置至少一个火焰源之前,还包括:
获取与所述三维模型的至少一个表面相匹配的特效图层,所述特效图层包括待设置火焰源的区域;
根据所述特效图层确定所述三维模型的表面中的待设置火焰源的特效区;
其中,在所述三维模型的至少部分表面设置至少一个火焰源,包括:
在所述三维模型的特效区内设置至少一个火焰源。
3.权利要求1所述的方法,其特征在于,所述目标特效平面还包括深度图像,所述深度图像表征所述二维模型图像的各个像素投影前的深度;
其中,将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面,包括:
根据所述深度图像表征的所述二维模型图像的各个像素投影前的深度,将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面。
4.如权利要求3所述的方法,其特征在于,基于预设火焰模拟算法和所述目标特效平面中的至少一个火焰源生成火焰特效图层,包括:
将所述至少一个火焰源输入所述预设火焰模拟算法,以得到所述预设火焰模拟算法的输出结果;
根据所述输出结果确定所述火焰特效图层中各个像素点的属性值,所述属性值包括颜色值和透明度。
5.如权利要求4所述的方法,其特征在于,所述属性值还包括温度值和密度值;
其中,根据所述输出结果确定所述火焰特效图层中各个像素点的属性值,包括:
根据所述输出结果确定所述火焰特效图层中目标像素点所在位置的温度值和密度值;
根据所述目标像素点所在位置的温度值确定所述目标像素点的颜色值,以及,根据所述目标像素点所在位置的密度值确定所述目标像素点的透明度。
6.如权利要求4所述的方法,其特征在于,将所述至少一个火焰源输入所述预设火焰模拟算法,以得到所述预设火焰模拟算法的输出结果,包括:
将包括所述至少一个火焰源的输入图层输入所述预设火焰模拟算法,得到所述预设火焰模拟算法输出的经过至少一次迭代处理的输出图层,其中,所述输入图层包括各个像素点的属性值,所述输出图层中的目标像素点的属性值根据所述目标像素点在所述输入图层中相对应的像素点的相邻像素点在所述输入图层中的属性值确定;
将经过至少一次迭代处理的输出图层确定为所述预设火焰模拟算法的输出结果。
7.如权利要求5或6所述的方法,其特征在于,将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面之后,还包括:
确定添加火焰特效后的画面对应的第一帧;
根据所述第一帧的画面生成与所述第一帧相邻的第二帧的画面,所述第二帧的画面中包括与所述第一帧的画面关联的火焰特效,所述第二帧的画面中的火焰特效根据所述第一帧的画面中的各个像素点的温度值和/或密度值生成。
8.一种在画面中添加火焰特效的装置,其特征在于,包括:
获取模块,获取待添加火焰特效的三维模型;
设置模块,在所述三维模型的至少部分表面设置至少一个火焰源,所述至少一个火焰源用于生成火焰特效;
投影模块,将包含至少一个火焰源的三维模型投影至目标特效平面,投影后的所述目标特效平面中包括至少一个模型图层,所述模型图层包括所述三维模型投影得到的二维模型图像和分布在所述二维模型图像上的至少一个火焰源,所述至少一个模型图层表征所述三维模型至少一个表面的遮挡关系;
生成模块,基于预设火焰模拟算法和所述目标特效平面中的至少一个火焰源生成火焰特效图层,所述火焰特效图层包括至少一个火焰图像,所述预设火焰模拟算法用于根据所述至少一个火焰源的位置生成火焰图像;
渲染模块,将所述火焰特效图层与所述三维模型进行叠加渲染,得到添加火焰特效后的画面。
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111183954.7A CN114004920A (zh) | 2021-10-11 | 2021-10-11 | 一种在画面中添加火焰特效的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111183954.7A CN114004920A (zh) | 2021-10-11 | 2021-10-11 | 一种在画面中添加火焰特效的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114004920A true CN114004920A (zh) | 2022-02-01 |
Family
ID=79922560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111183954.7A Pending CN114004920A (zh) | 2021-10-11 | 2021-10-11 | 一种在画面中添加火焰特效的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114004920A (zh) |
-
2021
- 2021-10-11 CN CN202111183954.7A patent/CN114004920A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111462313B (zh) | 绒毛效果的实现方法、装置和终端 | |
EP2419885B1 (en) | Method for adding shadows to objects in computer graphics | |
RU2427918C2 (ru) | Метафора двумерного редактирования для трехмерной графики | |
US7583264B2 (en) | Apparatus and program for image generation | |
EP3989175A1 (en) | Illumination probe generation method, apparatus, storage medium, and computer device | |
CN114419240B (zh) | 光照渲染方法、装置、计算机设备和存储介质 | |
US20230230311A1 (en) | Rendering Method and Apparatus, and Device | |
CN111986303B (zh) | 流体渲染方法、装置、存储介质及终端设备 | |
CN112184873B (zh) | 分形图形创建方法、装置、电子设备和存储介质 | |
CN113509721B (zh) | 阴影数据确定方法、装置、设备和可读介质 | |
CN111968214B (zh) | 一种体积云渲染方法、装置、电子设备及存储介质 | |
CN112991508A (zh) | 一种基于WebGL的3D渲染系统及方法 | |
JP2012190428A (ja) | 立体映像視覚効果処理方法 | |
RU2422902C2 (ru) | Двумерная/трехмерная комбинированная визуализация | |
CN111429561A (zh) | 一种虚拟仿真渲染引擎 | |
CN118397160A (zh) | 一种用于油田站场逆向建站系统的自主化三维渲染引擎 | |
CN114820980A (zh) | 三维重建方法、装置、电子设备和可读存储介质 | |
CN112435304B (zh) | 水体交互贴图方法及系统 | |
CN117974856A (zh) | 渲染方法、计算设备及计算机可读存储介质 | |
CN114004920A (zh) | 一种在画面中添加火焰特效的方法和装置 | |
CN116310013A (zh) | 动画渲染方法、装置、计算机设备及计算机可读存储介质 | |
CN112465941B (zh) | 一种体积云处理方法、装置、电子设备及存储介质 | |
CN113192173B (zh) | 三维场景的图像处理方法、装置及电子设备 | |
CN111681307A (zh) | 一种应用于三维软件的动态三维坐标轴的实现方法 | |
CN118521696A (zh) | 三维虚拟场景渲染方法、装置、计算机设备和存储介质 |
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 |