坑洞效果的渲染方法、装置和电子设备与流程



1.本发明涉及模型渲染技术领域,尤其是涉及一种坑洞效果的渲染方法、装置和电子设备。


背景技术:



2.在一些虚拟场景的制作中,通常需要在不透明的模型表面渲染坑洞效果,例如,地面模型表面。相关技术中,通常通过破坏原有模型的方式,在原有模型的表面进行挖洞处理,实现坑洞效果,但是,如果实际制作需求要求在任意位置实现坑洞效果,则需要预先制作多个具有坑洞的模型,以对应实际要求的任意位置。这种需要破坏模型的方式过程繁琐,制作效率低,且场景中的坑洞效果不佳。


技术实现要素:



3.有鉴于此,本发明的目的在于提供一种坑洞效果的渲染方法、装置和电子设备,以在不破坏模型的情况下,在模型表面实现三维坑洞效果的渲染,提高场景效果与制作效率。
4.第一方面,本发明实施例提供了一种坑洞效果的渲染方法,该方法包括:获取第一目标模型的渲染数据,以及待渲染至第一目标模型上的坑洞模型的渲染数据;其中,坑洞模型的渲染数据包括第一参考值,第一参考值用于:基于模板测试在第一目标模型的目标区域渲染坑洞模型;创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;其中,模板缓冲区中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值;通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型;根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型;其中,坑洞模型位于第一目标模型的下方。
5.进一步的,创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域的步骤,包括:根据第一目标模型的尺寸,创建模板缓冲区;其中,模板缓冲区存储有第一目标模型中每个像素点对应的模板值,模板值为预设的初始模板值;将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值。
6.进一步的,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值的步骤,包括:通过模板测试的方式,根据洞口模型的参考值,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值;其中,洞口模型的参考值为第一参考值,洞口模型的形状为待渲染区域的形状。
7.进一步的,通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型的步骤,包括:根据坑洞模型的第一参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值等于第一参考值的第一待渲染区域;根据坑洞模型的渲染数据,在第一目标模型中第一待渲染区域对应的第一目标区域渲染坑洞模型。
8.进一步的,根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤,包括:根据第一目标模型的第二参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值不等于第二参考值的第二待渲染区域;其中,第二参考值等于第一参考值;根据第一目标模型的渲染数据,在第一目标模型中第二待渲染区域对应的第二目标区域渲染第一目标模型;其中,第二目标区域为第一目标模型中除目标区域以外的区域。
9.进一步的,根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤之后,方法还包括:获取第二目标模型的渲染数据;通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型;根据第二目标模型所在场景的光照信息,在第一目标模型中渲染第二目标模型的光照效果。
10.进一步的,通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型的步骤,包括:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型与第一目标模型的相对位置;如果第二目标模型位于第一目标模型的上方,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第一指定区域渲染第二目标模型;如果第二目标模型的部分模型或全部模型位于第一目标模型的下方,且第二目标模型的部分模型或全部模型位于第一目标模型的目标区域,根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型。
11.进一步的,根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型的步骤,包括:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型在目标区域是否被第一目标模型遮挡;如果第二目标模型未被第一目标模型遮挡,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第二指定区域渲染第二目标模型。
12.进一步的,方法还包括:如果第二目标模型的部分第二目标模型被第一目标模型遮挡,根据第二目标模型的第三参考值和模板缓冲区的模板值,从模板缓冲区中确定大于或等于第三参考值的模板值对应的第三待渲染区域;其中,第三参考值等于第一参考值;根据第二目标模型的渲染数据,在第一目标模型中第三待渲染区域对应的第三目标区域渲染第二目标模型中未被遮挡的部分模型。
13.进一步的,第一目标模型的材质为不透明材质。
14.第二方面,本发明实施例提供了一种坑洞效果的渲染装置,装置包括:获取模块,用于获取模块,用于获取第一目标模型的渲染数据,以及待渲染至第一目标模型上的坑洞模型的渲染数据;其中,坑洞模型的渲染数据包括第一参考值,第一参考值用于:基于模板测试在第一目标模型的目标区域渲染坑洞模型;创建模块,用于创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;其中,模板缓冲区中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值;坑洞渲染模块,用于通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型;目标渲染模块,用于根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目
标模型;其中,坑洞模型位于第一目标模型的下方。
15.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现第一方面任一项的坑洞效果的渲染方法。
16.第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面任一项的坑洞效果的渲染方法。
17.本发明实施例带来了以下有益效果:
18.本发明提供了一种坑洞效果的渲染方法、装置和电子设备,将坑洞模型的渲染数据中的第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;模板缓冲区中,待渲染区域的模板值为第一参考值;通过模板测试的方式,基于坑洞模型和第一目标模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型。该方式中,将坑洞模型置于第一目标模型的下方,不考虑模型的深度,创建模板缓冲区,通过模板测试的方式,先渲染坑洞模型,然后渲染第一目标模型,以将第一目标模型下方的坑洞显示在第一目标模型表面,在不破坏第一目标模型的情况下,实现了坑洞效果的渲染,提高了场景的坑洞效果与制作效率。
19.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
20.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
21.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1为本发明实施例提供的一种坑洞效果的渲染方法的流程图;
23.图2为本发明实施例提供的一种模板缓冲区的示意图;
24.图3为本发明实施例提供的一种坑洞效果的示意图;
25.图4为本发明实施例提供的另一种坑洞效果的示意图;
26.图5为本发明实施例提供的另一种坑洞效果的示意图;
27.图6为本发明实施例提供的另一种坑洞效果的示意图;
28.图7为本发明实施例提供的一种坑洞效果的渲染装置的结构示意图;
29.图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
30.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明
的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
31.目前,在一些虚拟场景的制作中,通常需要在不透明的模型表面渲染坑洞效果,例如,在地面模型的表面制作陷阱坑洞,技能地裂,传送门等。相关技术中,通常通过破坏原有模型的方式,在原有模型的表面进行挖洞处理,实现坑洞效果,但是,如果实际制作需求要求在任意位置实现坑洞效果,则需要预先制作多个具有坑洞的模型,以对应实际要求的任意位置。这种需要破坏模型的方式过程繁琐,制作效率低,且场景中的坑洞效果不佳。基于此,本发明实施例提供的一种坑洞效果的渲染方法、装置和电子设备,该技术可以应用于计算机、平板电脑等设备。
32.为便于对本实施例进行理解,首先对本发明实施例所公开的一种坑洞效果的渲染方法进行详细介绍,如图1所示,该方法包括如下步骤:
33.步骤s102,获取第一目标模型的渲染数据,以及待渲染至第一目标模型上的坑洞模型的渲染数据;其中,坑洞模型的渲染数据包括第一参考值,第一参考值用于:基于模板测试在第一目标模型的目标区域渲染坑洞模型;
34.上述第一目标模型可以是地面模型,比如沙滩地面模型、水泥地面模型等,也可以是墙面模型,比如建筑墙面模型,还可以是桌面模型,比如实木桌子模型等,当然也可以是其他平面的模型。上述第一目标模型也是预先根据目标模型的形状搭建或建立的初始。上述渲染数据主要用于提供渲染模型的资源,结合模型的着器用于告诉引擎如何渲染该模型。其中,上述渲染数据中通常包括模型预设的参考值,以及该参考值与模板缓冲区中的模板值的对比规则;还包括渲染模型所需的灯光资源、材质资源、模型贴图等,比如沙滩模型则渲染数据就会包括沙滩对应的材质。上述坑洞模型通常与第一目标模型的种类相对应,比如,第一目标模型为沙滩,则坑洞模型为沙滩类型的坑洞;再比如,第一目标模型为土地,则坑洞模型为泥土类型的坑洞。上述第一目标模型的目标区域通常是指坑洞的大小,可以是圆形,也可以是不规则的形状,具体可以根据实际场景进行设置。
35.上述第一参考值可以表示为stencil值,即模板值,该值存储在场景每个模型的着器中,默认为“0”。上述第一参考值可以根据实际要求进行设置,比如为“5”。该第一参考值主要用于与模板缓冲区的模板值进行对比,将满足对比要求的像素点渲染至对应的位置。在本实施例中,上述第一参考值主要用于指示在第一目标模型的洞口区域渲染坑洞模型。
36.步骤s104,创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;其中,模板缓冲区中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值;
37.上述模板缓冲区可以表示为stencil buffer,通常上述模板缓冲区的大小与第一目标模型大小相同,且,创建的模板缓冲区储存了第一目标模型中每个像素对应的无符号整型值(一般为0-255之间的值),这个值本质上是没有意义的,只是为片段的剔除提供另一种支持,所以这个值的具体意义是由程序自己定义的。具体的使用方式:用这个模板值与一个预先设定的参考值进行对比,根据对比结果来决定是否更新相应的像素点的颜值。这个比较的过程称为模板测试。
38.通常初始状态下模板缓冲区中的模板值为默认值“0”,为了再第一目标模型的目标区域渲染坑洞模型,可以将第一参考值存储在模板缓冲区中坑洞模型对应的待渲染区域。其中,待渲染区域可以是圆形、也可以是椭圆形,还可以是其他不规则的形状,具体可以根据实际需要进行设置。将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域后,模板缓冲区中的模板值则会包括两个模板值,其中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值,该预设的初始模板值为默认值“0”;第一参考值可以为“5”等。
39.具体实现时,可以根据模板测试的方式,预先将第一参考值写入具有指定形状的洞口模型,基于该洞口模型将第一参考值存储于模板缓冲区中坑洞模型对应的待渲染区域。
40.步骤s106,通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型;
41.由于坑洞模型位于第一目标模型的下方,因此,为了将坑洞模型显示在第一目标模型的表面,采用自定义的渲染混合器,采用不透明混合类型、关闭深度写入,开启模板值写入。
42.上述模板测试是指,将模板缓冲区的模板值与模型中预先设定的参考值进行对比,具体的对比规则预先写入在模型的渲染数据中,根据对比结果来决定是否渲染参考值对应的像素的过程;其中,对比规则通常为比较模板缓冲区的模板值与模型中预先设定的参考值的大小,比如,如果模板值大于模型中预先设定的参考值的时候,渲染该参考值对应的像素。
43.具体的,在坑洞模型的渲染数据中预先写入第一参考值与模板缓冲区中的模板值的对比规则,将模板缓冲区中每个像素点的模板值与第一参考值进行对比,从模板缓冲区中获取满足对比规则的像素点,即上述待渲染区域。由于模板缓冲区中的像素点与第一目标模型的像素点一一对应,因此可以获取第一目标模型中待渲染区域对应的目标区域,最后将坑洞模型渲染至该目标区域。
44.步骤s108,根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型;其中,坑洞模型位于第一目标模型的下方。
45.由于关闭了深度写入,因此在渲染坑洞模型和第一目标模型时,不会考虑模型之间的位置关系,只根据模型的参考值和模板缓冲区的模板值,渲染需要渲染的区域。
46.具体的,可以在第一目标模型的渲染数据中预先写入参考值,并写入参考值与模板缓冲区中的模板值的对比规则,将模板缓冲区中每个像素点的模板值与第一目标模型的参考值进行对比,从模板缓冲区中获取满足对比规则的像素点,即模板缓冲区中,除待渲染区域以外的区域。由于模板缓冲区中的像素点与第一目标模型的像素点一一对应,因此可以获取目除目标区域以外的区域,最后在除目标区域以外的区域渲染第一目标模型,即可将坑洞模型显示在第一目标模型的表面,实现了具有坑洞效果的第一目标模型。
47.本发明实施例提供了一种坑洞效果的渲染方法,将坑洞模型的渲染数据中的第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;模板缓冲区中,待渲染区域的模板值为第一参考值;通过模板测试的方式,基于坑洞模型和第一目标模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型,在除目标区域以外的区域渲染第
一目标模型,得到具有坑洞效果的第一目标模型。该方式中,将坑洞模型置于第一目标模型的下方,不考虑模型的深度,创建模板缓冲区,通过模板测试的方式,先渲染坑洞模型,然后渲染第一目标模型,以将第一目标模型下方的坑洞显示在第一目标模型表面,在不破坏第一目标模型的情况下,实现了坑洞效果的渲染,提高了场景的坑洞效果与制作效率。
48.下面描述创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域的步骤,一种可能实施方式:
49.(1)根据第一目标模型的尺寸,创建模板缓冲区;其中,模板缓冲区存储有第一目标模型中每个像素点对应的模板值,模板值为预设的初始模板值;
50.(2)将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值。
51.具体的,每个第一目标模型的像素点都在初始创建的第一目标模型的模板缓冲区中存储有对应的模板值,本实施例中,初始创建的模板缓冲区中的模板值都为预设的初始模板值“0”。为了能够在第一目标模型的表面渲染坑洞模型,可以将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值。该方式中,通过将第一参考值存储于模板缓冲区的待渲染区域,能够在后续的渲染过程中,根据模板测试的方式,在第一目标模型中渲染坑洞模型。
52.上述将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值的步骤,一种可能的实施方式:
53.通过模板测试的方式,根据洞口模型的参考值,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值;其中,洞口模型的参考值为第一参考值,洞口模型的形状为待渲染区域的形状。
54.具体的,可以预先建立一个洞口模型,该洞口模型可以为一个圆形模型,也可以为一个椭圆形模型,还可以是一个不规则的模型。该洞口模型主要用于在模板缓冲区中设置具有洞口形状的区域,并将该区域的模板值设置为第一参考值。因此,上述洞口模型的渲染数据包括的参考值为上述第一参考值,同时设置洞口模型的模板对比规则为,当洞口模型的第一参考值大于1,则将第一参考值存储在洞口模型对应的区域,得到模板缓冲区中坑洞模型对应的待渲染区域。
55.举例说明,上述洞口模型的参考值为第一参考值,该第一参考值为“5”,使用简单的圆模型来制作洞口,在洞口模型的shader中,stencil设置如下代码所示:
[0056][0057]
上述代码的含义是将stencil值(参考值)设定为5,并一直存储在stencilbuffer中。如图2所示,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值的模板缓冲区的示意图,其中,圆形区域,即待渲染区域的模板值为第一参考值“5”,其他区域暂时没有模型,所以为灰黑,其中的模板值为“0”。
[0058]
需要说明的是,由于洞口模型不需要写深度,所以需要使用自定义的混合器,具体通过下述代码实现:shadercompositor name=“opaquedisablezwrite”,其中“opaquedisablezwrite”为自定义的混合器。且,上述方式中,通过模板测试的方式,仅仅将洞口模型的参考值写入了模板缓冲区,并不会渲染该洞口模型。
[0059]
另外,可以在自定义的渲染混合器中设置每个模型的渲染级别,即模型渲染顺序,可以通过渲染级别的数值,确定模型的渲染顺序,其中,数值越小越先被渲染。,由于洞口模型不需要向深度缓冲区中写深度,又因为洞口是整个功能的起点,所以必须最先渲染,然后渲染坑洞模型,然后渲染第一目标模型。其中,将洞口模型放置在第一目标模型的表面上,高于第一目标模型的表面一点。
[0060]
上述方式中,通过洞口模型,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值,以方便后续在第一目标模型的洞口区域渲染坑洞模型。
[0061]
下面通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型的步骤,一种可能的实施方式:
[0062]
根据坑洞模型的第一参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值等于第一参考值的第一待渲染区域;根据坑洞模型的渲染数据,在第一目标模型中第一待渲染区域对应的第一目标区域渲染坑洞模型。
[0063]
根据渲染管线性质,只有当坑洞模型的stencil值等于洞口模型的stencil值时,才能被渲染出来,且只能在洞口模型区域(即第一目标区域)显示坑洞模型。具体的,首先,从模板缓冲区中确定模板值等于第一参考值的第一待渲染区域,然后在第一目标模型中确定第一待渲染区域对应的第一目标区域,然后,将位于第一目标区域的坑洞模型进行渲染,以使洞口下为坑洞模型,但是仅在圆形的洞口区域可以看到坑洞模型的内容。具体可以通过下述代码实现:
[0064][0065]
另外,根据坑洞模型的渲染数据,在第一目标模型中第一待渲染区域对应的第一目标区域渲染坑洞模型后的渲染结果如图3所示,此时仅在洞口区域渲染了坑洞模型(图中用灰表示坑洞模型),且只能在洞口区域显示坑洞模型。该方式中,不考虑坑洞模型的深度,只通过模板测试的方式,在洞口区域渲染坑洞模型,能够使得洞口下坑洞模型实际上是始终不会被遮挡的。
[0066]
上述根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤,一种可能的实施方式:
[0067]
根据第一目标模型的第二参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值不等于第二参考值的第二待渲染区域;其中,第二参考值等于第一参考值;根据第一目标模型的渲染数据,在第一目标模型中第二待渲染区域对应的第二目标区域渲染第一目标模型;其中,第二目标区域为第一目标模型中除目标区域以外的区域。
[0068]
具体的,首先,从模板缓冲区中确定模板值不等于第一参考值的第二待渲染区域,然后在第一目标模型中确定第二待渲染区域对应的第二目标区域,然后,将位于第二目标区域的第一目标模型进行渲染,以使除洞口以外的区域为第一目标模型。该方式中,不考虑第一目标模型的深度,只通过模板测试的方式,在除洞口区域以外的区域渲染第一目标模型,以实现第一目标模型表面的坑洞效果。
[0069]
另外,为了进一步提高坑洞效果,还可以第一目标模型的洞口区域渲染洞口的边缘模型,具体可以在第一目标模型的洞口区域的边缘区域设置边缘模型,然后根据模板测试,或深度测试,或模板测试和深度测试的方式,第一目标模型的洞口区域的边缘区域渲染该边缘模型。具体可以参见如4所示的坑洞效果的示意图。使用高于地面的边缘模型将洞口围一圈,这样看起来更自然美观。
[0070]
上述根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤之后,上述方法还包括:
[0071]
(1)获取第二目标模型的渲染数据;
[0072]
(2)通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型;
[0073]
(3)根据第二目标模型所在场景的光照信息,在第一目标模型中渲染第二目标模型的光照效果。
[0074]
上述第二目标模型可以是虚拟角、虚拟小球等可以移动的动态模型,还可以是虚拟建筑、虚拟树木等不可以移动的非动态模型。上述深度测试具体包括的是第二目标模型的深度和第一目标模型的深度,具体可以根据第二目标模型与第一目标模型的深度信息,判断模型之间的遮挡关系,将未被遮挡的第二目标模型渲染出来。比如,第二目标模型在第一目标模型的表面上方,可以直接在第一目标模型上方的指定区域渲染第二目标模型。其中,指定区域具体可以根据第二目标模型的位置进行确定。需要说明的是,坑洞模型、第一目标模型和第二目标模型之间的位置,通常是预先设置好的。
[0075]
另外,上述第一目标模型的材质为不透明材质,因此,可以在渲染模型的时候,开启光照渲染,使引擎能够根据第二目标模型所在场景的光照信息,在第一目标模型中渲染第二目标模型的光照效果,比如第二目标模型在第一目标模型表面的阴影。上述方式中,通过深度测试渲染第二目标模型,提高了坑洞效果。另外,渲染模型的光照效果,进一步提高了场景效果。
[0076]
上述通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型的步骤,一种可能的实施方式:
[0077]
(1)根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型与第一目标模型的相对位置;
[0078]
(2)如果第二目标模型位于第一目标模型的上方,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第一指定区域渲染第二目标模型;
[0079]
(3)如果第二目标模型的部分模型或全部模型位于第一目标模型的下方,且第二目标模型的部分模型或全部模型位于第一目标模型的目标区域,根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型。
[0080]
具体的,将除洞口区域以外区域的第一目标模型的深度信息写入深度缓冲区,因此,可以根据第二目标模型所处位置的深度信息与深度缓冲区的深度信息进行比较,如果第二目标模型的深度信息小于第一目标模型的深度信息,则说明第二目标模型位于第一目标模型的上方;如果第二目标模型中存在深度信息大于第一目标模型的深度信息,则说明第二目标模型位于第一目标模型的下方。
[0081]
需要说明的是,如果第二目标模型位于第一目标模型的洞口区域,则根据模板测试的方式,渲染第二目标模型。
[0082]
如果第二目标模型位于第一目标模型的上方,则说明第二目标模型没有被第一目标模型遮挡,首先在第一目标模型中确定第二目标模型渲染的第一指定区域,具体可以根据第二目标模型的位置确定,然后根据第二目标模型的渲染数据,在第一目标模型的第一指定区域渲染第二目标模型。同时渲染第二目标模型的光照效果。如图5所示,当第二目标模型为小球模型,且第二目标模型在第一目标模型的上方区域时的坑洞效果的示意图。
[0083]
如果第二目标模型的部分模型或全部模型位于第一目标模型的下方,则需要判断第二目标模型是否位于目标区域,如果部分模型或全部模型位于第一目标模型的目标区域,则说明需要坑洞中具有第二目标模型。具体可以根据深度测试的方式渲染位于第一目标模型上方的第二目标模型,根据模板测试的方式,渲染位于目标区域的第二目标模型。当然第二目标模型中存在被第一目标模型遮挡情况,则不会渲染被遮挡的部分第二目标模型。
[0084]
实际实现时,根据第二目标模型的第三参考值与第一参考值进行对比,根据对比结果和第二目标模型的渲染数据,在第二指定区域中的目标区域中渲染位于该区域的第二目标模型。根据第二目标模型的深度信息,确定第二目标模型是否被遮挡,如果有被遮挡,则不会进行渲染,如果没有被遮挡,则会将位于第一目标模型上方的第二目标模型进行渲染。
[0085]
上述方式中,通过深度测试和模板测试的方式,渲染第二目标模型,实现了第二目标模型与洞口、第一目标模型表面有正确的遮挡关系。此效果完全在不涉及修改第一目标模型的情况下完成,可以任意移动洞口及坑洞的位置,效果仍然正确。
[0086]
上述根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型的步骤,一种可能的实施方式:
[0087]
根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型在目标区域是否被第一目标模型遮挡;如果第二目标模型未被第一目标模型遮挡,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第二指定区域渲染第二目标模型。
[0088]
如果第二目标模型未被第一目标模型遮挡,则说明第二目标模型完全位于坑洞中,或者部分位于坑洞中,其他部分位于第一目标模型的上方。由于第二目标模型未被第一目标模型遮挡,无论是否位于坑洞,都会据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第二指定区域渲染第二目标模型。其中,位于坑洞中的部分模型,可以根据模板测试的方式,当第二目标模型的第三参考值大于等于第一参考值时,渲染位于坑洞中的部分模型。位于第一目标模型上方的部分模型,则可以直接进行渲染。
[0089]
另外,如果第二目标模型的部分第二目标模型被第一目标模型遮挡,根据第二目标模型的第三参考值和模板缓冲区的模板值,从模板缓冲区中确定大于或等于第三参考值的模板值对应的第三待渲染区域;其中,第三参考值等于第一参考值;根据第二目标模型的渲染数据,在第一目标模型中第三待渲染区域对应的第三目标区域渲染第二目标模型中未被遮挡的部分模型。
[0090]
如图6所示,第二目标模型位于坑洞中,但是由于显示角度,部分第二目标模型会被第一目标模型遮挡,此时,可以从模板缓冲区中确定大于或等于第三参考值的模板值对应的第三待渲染区域,然后在第一目标模型中确定第三待渲染区域对应的第三目标区域,将位于第三目标区域的不被遮挡的部分模型进行渲染,使得第二目标模型与洞口、第一目标模型表面具有正确的遮挡关系。
[0091]
上述方式中,如果第二目标模型的部分第二目标模型被第一目标模型遮挡,通过模板测试的方式,渲染未被遮挡的部分模型,实现了第二目标模型与洞口、第一目标模型表面具有正确的遮挡关系。
[0092]
另外,第一目标模型中渲染的洞口区域可以根据洞口模型的不同,拓展应用,支持动态洞口的开合效果。
[0093]
总之,上述方式中,通过渲染级别指定模型之间的渲染顺序,通过模板值指定模型之间的遮挡关系,通过自定义的混合器,在渲染洞口模型、坑洞模型和第一目标模型时关闭深度写入,仅通过模板测试,进行模型渲染,在进行物体渲染时,打开深度写入,渲染第二目标模型,实现了第二目标模型在坑洞内外的效果,以及与其他模型之间的遮挡关系。
[0094]
对应上述的方法实施例,本发明实施例提供了一种坑洞效果的渲染装置,如图7所示,该装置包括:
[0095]
获取模块71,用于获取模块,用于获取第一目标模型的渲染数据,以及待渲染至第一目标模型上的坑洞模型的渲染数据;其中,坑洞模型的渲染数据包括第一参考值,第一参考值用于:基于模板测试在第一目标模型的目标区域渲染坑洞模型;
[0096]
创建模块72,用于创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;其中,模板缓冲区中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值;
[0097]
坑洞渲染模块73,用于通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型;
[0098]
目标渲染模块74,用于根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型;其中,坑洞模型位于第一目标模型的下方。
[0099]
本发明实施例提供了一种坑洞效果的渲染装置,将坑洞模型的渲染数据中的第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;模板缓冲区中,待渲染区域的模板值为第一参考值;通过模板测试的方式,基于坑洞模型和第一目标模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型。该方式中,将坑洞模型置于第一目标模型的下方,不考虑模型的深度,创建模板缓冲区,通过模板测试的方式,先渲染坑洞模型,然后渲染第一目标模型,以将第一目标模型下方的坑洞显示在第一目标模型表面,在不破坏第
一目标模型的情况下,实现了坑洞效果的渲染,提高了场景的坑洞效果与制作效率。
[0100]
进一步的:上述创建模块,还用于:根据第一目标模型的尺寸,创建模板缓冲区;其中,模板缓冲区存储有第一目标模型中每个像素点对应的模板值,模板值为预设的初始模板值;将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值。
[0101]
进一步的,上述创建模块,还用于:通过模板测试的方式,根据洞口模型的参考值,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值;其中,洞口模型的参考值为第一参考值,洞口模型的形状为待渲染区域的形状。
[0102]
进一步的,上述坑洞渲染模块,还用于:根据坑洞模型的第一参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值等于第一参考值的第一待渲染区域;根据坑洞模型的渲染数据,在第一目标模型中第一待渲染区域对应的第一目标区域渲染坑洞模型。
[0103]
进一步的,上述目标渲染模块,还用于:根据第一目标模型的第二参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值不等于第二参考值的第二待渲染区域;其中,第二参考值等于第一参考值;根据第一目标模型的渲染数据,在第一目标模型中第二待渲染区域对应的第二目标区域渲染第一目标模型;其中,第二目标区域为第一目标模型中除目标区域以外的区域。
[0104]
进一步的,上述装置还包括:物体渲染模块,用于:获取第二目标模型的渲染数据;通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型;根据第二目标模型所在场景的光照信息,在第一目标模型中渲染第二目标模型的光照效果。
[0105]
进一步的,上述物体渲染模块,还用于:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型与第一目标模型的相对位置;如果第二目标模型位于第一目标模型的上方,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第一指定区域渲染第二目标模型;如果第二目标模型的部分模型或全部模型位于第一目标模型的下方,且第二目标模型的部分模型或全部模型位于第一目标模型的目标区域,根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型。
[0106]
进一步的,上述物体渲染模块,还用于:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型在目标区域是否被第一目标模型遮挡;如果第二目标模型未被第一目标模型遮挡,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第二指定区域渲染第二目标模型。
[0107]
进一步的,上述物体渲染模块,还用于:如果第二目标模型的部分第二目标模型被第一目标模型遮挡,根据第二目标模型的第三参考值和模板缓冲区的模板值,从模板缓冲区中确定大于或等于第三参考值的模板值对应的第三待渲染区域;其中,第三参考值等于第一参考值;根据第二目标模型的渲染数据,在第一目标模型中第三待渲染区域对应的第三目标区域渲染第二目标模型中未被遮挡的部分模型。
[0108]
进一步的,上述第一目标模型的材质为不透明材质。
[0109]
本发明实施例提供的坑洞效果的渲染装置,与上述实施例提供的坑洞效果的渲染方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
[0110]
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述坑洞效果的渲染方法。该电子设备可以是服务器,也可以是终端设备。
[0111]
参见图8所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的计算机可执行指令,该处理器100执行计算机可执行指令以实现上述坑洞效果的渲染方法,该方法具体包括:
[0112]
获取第一目标模型的渲染数据,以及待渲染至第一目标模型上的坑洞模型的渲染数据;其中,坑洞模型的渲染数据包括第一参考值,第一参考值用于:基于模板测试在第一目标模型的目标区域渲染坑洞模型;创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;其中,模板缓冲区中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值;通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型;根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型;其中,坑洞模型位于第一目标模型的下方。该方式中,将坑洞模型置于第一目标模型的下方,不考虑模型的深度,创建模板缓冲区,通过模板测试的方式,先渲染坑洞模型,然后渲染第一目标模型,以将第一目标模型下方的坑洞显示在第一目标模型表面,在不破坏第一目标模型的情况下,实现了坑洞效果的渲染,提高了场景的坑洞效果与制作效率。
[0113]
上述创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域的步骤,包括:根据第一目标模型的尺寸,创建模板缓冲区;其中,模板缓冲区存储有第一目标模型中每个像素点对应的模板值,模板值为预设的初始模板值;将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值。该方式中,通过将第一参考值存储于模板缓冲区的待渲染区域,能够在后续的渲染过程中,根据模板测试的方式,在第一目标模型中渲染坑洞模型。
[0114]
上述将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值的步骤,包括:通过模板测试的方式,根据洞口模型的参考值,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值;其中,洞口模型的参考值为第一参考值,洞口模型的形状为待渲染区域的形状。该方式中,通过洞口模型,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值,以方便后续在第一目标模型的洞口区域渲染坑洞模型。
[0115]
上述通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型的步骤,包括:根据坑洞模型的第一参考值和模板缓冲区的模板值,确定模板缓冲区中模板值等于第一参考值的第一待渲染区域;根据坑洞模型的渲染数据,在第一目标模型中第一待渲染区域对应的第一目标区域渲染坑洞模型。该方式中,不考虑坑洞模型的深度,只通过模板测试的方式,在洞口区域渲染坑洞模型,能够使得洞口下坑洞模型实际上是始终不会被遮挡的。
[0116]
上述根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤,包括:根据第一目标模型的第二参考值和模板缓冲区的模板值,确定模板缓冲区中模板值不等于第二参考值的第二待渲染区域;其中,
第二参考值等于第一参考值;根据第一目标模型的渲染数据,在第一目标模型中第二待渲染区域对应的第二目标区域渲染第一目标模型;其中,第二目标区域为第一目标模型中除目标区域以外的区域。该方式中,不考虑第一目标模型的深度,只通过模板测试的方式,在除洞口区域以外的区域渲染第一目标模型,以实现第一目标模型表面的坑洞效果。
[0117]
上述根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤之后,方法还包括:获取第二目标模型的渲染数据;通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型;根据第二目标模型所在场景的光照信息,在第一目标模型中渲染第二目标模型的光照效果。该方式中,通过深度测试渲染第二目标模型,提高了坑洞效果。另外,渲染模型的光照效果,进一步提高了场景效果。
[0118]
上述通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型的步骤,包括:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型与第一目标模型的相对位置;如果第二目标模型位于第一目标模型的上方,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第一指定区域渲染第二目标模型;如果第二目标模型的部分模型或全部模型位于第一目标模型的下方,且第二目标模型的部分模型或全部模型位于第一目标模型的目标区域,根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型。该方式中,通过深度测试和模板测试的方式,渲染第二目标模型,实现了第二目标模型与洞口、第一目标模型表面有正确的遮挡关系。此效果完全在不涉及修改第一目标模型的情况下完成,可以任意移动洞口及坑洞的位置,效果仍然正确。
[0119]
上述根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型的步骤,包括:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型在目标区域是否被第一目标模型遮挡;如果第二目标模型未被第一目标模型遮挡,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第二指定区域渲染第二目标模型。
[0120]
上述方法还包括:如果第二目标模型的部分第二目标模型被第一目标模型遮挡,根据第二目标模型的第三参考值和模板缓冲区的模板值,从模板缓冲区中确定大于或等于第三参考值的模板值对应的第三待渲染区域;其中,第三参考值等于第一参考值;根据第二目标模型的渲染数据,在第一目标模型中第三待渲染区域对应的第三目标区域渲染第二目标模型中未被遮挡的部分模型。该方式中,如果第二目标模型的部分第二目标模型被第一目标模型遮挡,通过模板测试的方式,渲染未被遮挡的部分模型,实现了第二目标模型与洞口、第一目标模型表面具有正确的遮挡关系。
[0121]
上述第一目标模型的材质为不透明材质。可以实现场景的光照效果。
[0122]
进一步地,图8所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
[0123]
其中,存储器101可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通
信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0124]
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。
[0125]
本实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述坑洞效果的渲染方法。该方法具体包括如下步骤:
[0126]
获取第一目标模型的渲染数据,以及待渲染至第一目标模型上的坑洞模型的渲染数据;其中,坑洞模型的渲染数据包括第一参考值,第一参考值用于:基于模板测试在第一目标模型的目标区域渲染坑洞模型;创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;其中,模板缓冲区中,待渲染区域的模板值为第一参考值,除待渲染区域以外的区域的模板值为预设的初始模板值;通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型;根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型;其中,坑洞模型位于第一目标模型的下方。该方式中,将坑洞模型置于第一目标模型的下方,不考虑模型的深度,创建模板缓冲区,通过模板测试的方式,先渲染坑洞模型,然后渲染第一目标模型,以将第一目标模型下方的坑洞显示在第一目标模型表面,在不破坏第一目标模型的情况下,实现了坑洞效果的渲染,提高了场景的坑洞效果与制作效率。
[0127]
上述创建第一目标模型的模板缓冲区,将第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域的步骤,包括:根据第一目标模型的尺寸,创建模板缓冲区;其中,模板缓冲区存储有第一目标模型中每个像素点对应的模板值,模板值为预设的初始模板值;将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值。该方式中,通过将第一参考值存储于模板缓冲区的待渲染区域,能够在后续的渲染过程中,根据模板测试的方式,在第一目标模型中渲染坑洞模型。
[0128]
上述将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值的步骤,包括:通过模板测试的方式,根据洞口模型的参考值,将模板缓冲区中坑洞模型对应
的待渲染区域的模板值,更新为第一参考值;其中,洞口模型的参考值为第一参考值,洞口模型的形状为待渲染区域的形状。该方式中,通过洞口模型,将模板缓冲区中坑洞模型对应的待渲染区域的模板值,更新为第一参考值,以方便后续在第一目标模型的洞口区域渲染坑洞模型。
[0129]
上述通过模板测试的方式,基于坑洞模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型的步骤,包括:根据坑洞模型的第一参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值等于第一参考值的第一待渲染区域;根据坑洞模型的渲染数据,在第一目标模型中第一待渲染区域对应的第一目标区域渲染坑洞模型。该方式中,不考虑坑洞模型的深度,只通过模板测试的方式,在洞口区域渲染坑洞模型,能够使得洞口下坑洞模型实际上是始终不会被遮挡的。
[0130]
上述根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤,包括:根据第一目标模型的第二参考值和模板缓冲区的模板值,从模板缓冲区中确定模板缓冲区的模板值不等于第二参考值的第二待渲染区域;其中,第二参考值等于第一参考值;根据第一目标模型的渲染数据,在第一目标模型中第二待渲染区域对应的第二目标区域渲染第一目标模型;其中,第二目标区域为第一目标模型中除目标区域以外的区域。该方式中,不考虑第一目标模型的深度,只通过模板测试的方式,在除洞口区域以外的区域渲染第一目标模型,以实现第一目标模型表面的坑洞效果。
[0131]
上述根据第一目标模型的渲染数据,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型的步骤之后,方法还包括:获取第二目标模型的渲染数据;通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型;根据第二目标模型所在场景的光照信息,在第一目标模型中渲染第二目标模型的光照效果。该方式中,通过深度测试渲染第二目标模型,提高了坑洞效果。另外,渲染模型的光照效果,进一步提高了场景效果。
[0132]
上述通过深度测试的方式,基于第二目标模型的渲染数据,在第一目标模型的指定区域渲染第二目标模型的步骤,包括:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型与第一目标模型的相对位置;如果第二目标模型位于第一目标模型的上方,根据第二目标模型的渲染数据,在第一目标模型中第二目标模型对应的第一指定区域渲染第二目标模型;如果第二目标模型的部分模型或全部模型位于第一目标模型的下方,且第二目标模型的部分模型或全部模型位于第一目标模型的目标区域,根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型。该方式中,通过深度测试和模板测试的方式,渲染第二目标模型,实现了第二目标模型与洞口、第一目标模型表面有正确的遮挡关系。此效果完全在不涉及修改第一目标模型的情况下完成,可以任意移动洞口及坑洞的位置,效果仍然正确。
[0133]
上述根据第二目标模型的第三参考值,第一目标模型的深度信息,以及第二目标模型的渲染数据,在第一目标模型的第二指定区域渲染第二目标模型的步骤,包括:根据第一目标模型的深度信息和第二目标模型的深度信息,确定第二目标模型在目标区域是否被第一目标模型遮挡;如果第二目标模型未被第一目标模型遮挡,根据第二目标模型的渲染
数据,在第一目标模型中第二目标模型对应的第二指定区域渲染第二目标模型。
[0134]
上述方法还包括:如果第二目标模型的部分第二目标模型被第一目标模型遮挡,根据第二目标模型的第三参考值和模板缓冲区的模板值,从模板缓冲区中确定大于或等于第三参考值的模板值对应的第三待渲染区域;其中,第三参考值等于第一参考值;根据第二目标模型的渲染数据,在第一目标模型中第三待渲染区域对应的第三目标区域渲染第二目标模型中未被遮挡的部分模型。该方式中,如果第二目标模型的部分第二目标模型被第一目标模型遮挡,通过模板测试的方式,渲染未被遮挡的部分模型,实现了第二目标模型与洞口、第一目标模型表面具有正确的遮挡关系。
[0135]
上述第一目标模型的材质为不透明材质。可以实现场景的光照效果。
[0136]
本发明实施例所提供的坑洞效果的渲染方法、装置、电子设备以及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0137]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0138]
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0139]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0140]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0141]
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术特征:


1.一种坑洞效果的渲染方法,其特征在于,所述方法包括:获取第一目标模型的渲染数据,以及待渲染至所述第一目标模型上的坑洞模型的渲染数据;其中,所述坑洞模型的渲染数据包括第一参考值,所述第一参考值用于:基于模板测试在所述第一目标模型的目标区域渲染所述坑洞模型;创建所述第一目标模型的模板缓冲区,将所述第一参考值,存储于模板缓冲区中所述坑洞模型对应的待渲染区域;其中,所述模板缓冲区中,所述待渲染区域的模板值为所述第一参考值,除所述待渲染区域以外的区域的模板值为预设的初始模板值;通过模板测试的方式,基于所述坑洞模型的渲染数据,在所述第一目标模型中所述待渲染区域对应的目标区域渲染所述坑洞模型;根据所述第一目标模型的渲染数据,在除所述目标区域以外的区域渲染所述第一目标模型,得到具有坑洞效果的所述第一目标模型;其中,所述坑洞模型位于所述第一目标模型的下方。2.根据权利要求1所述的方法,其特征在于,创建所述第一目标模型的模板缓冲区,将所述第一参考值,存储于模板缓冲区中所述坑洞模型对应的待渲染区域的步骤,包括:根据所述第一目标模型的尺寸,创建所述模板缓冲区;其中,所述模板缓冲区存储有所述第一目标模型中每个像素点对应的模板值,所述模板值为所述预设的初始模板值;将所述模板缓冲区中所述坑洞模型对应的待渲染区域的模板值,更新为所述第一参考值。3.根据权利要求2所述的方法,其特征在于,将所述模板缓冲区中所述坑洞模型对应的待渲染区域的模板值,更新为所述第一参考值的步骤,包括:通过模板测试的方式,根据洞口模型的参考值,将所述模板缓冲区中所述坑洞模型对应的待渲染区域的模板值,更新为所述第一参考值;其中,所述洞口模型的参考值为所述第一参考值,所述洞口模型的形状为所述待渲染区域的形状。4.根据权利要求1所述的方法,其特征在于,通过模板测试的方式,基于所述坑洞模型的渲染数据,在所述第一目标模型中所述待渲染区域对应的目标区域渲染所述坑洞模型的步骤,包括:根据所述坑洞模型的第一参考值和所述模板缓冲区的模板值,从所述模板缓冲区中确定所述模板缓冲区的模板值等于所述第一参考值的第一待渲染区域;根据所述坑洞模型的渲染数据,在所述第一目标模型中所述第一待渲染区域对应的第一目标区域渲染所述坑洞模型。5.根据权利要求1所述的方法,其特征在于,根据所述第一目标模型的渲染数据,在除所述目标区域以外的区域渲染所述第一目标模型,得到具有坑洞效果的所述第一目标模型的步骤,包括:根据所述第一目标模型的第二参考值和所述模板缓冲区的模板值,从所述模板缓冲区中确定所述模板缓冲区的模板值不等于所述第二参考值的第二待渲染区域;其中,所述第二参考值等于所述第一参考值;根据所述第一目标模型的渲染数据,在所述第一目标模型中所述第二待渲染区域对应的第二目标区域渲染所述第一目标模型;其中,所述第二目标区域为所述第一目标模型中除所述目标区域以外的区域。
6.根据权利要求1所述的方法,其特征在于,根据所述第一目标模型的渲染数据,在除所述目标区域以外的区域渲染所述第一目标模型,得到具有坑洞效果的所述第一目标模型的步骤之后,所述方法还包括:获取第二目标模型的渲染数据;其中,所述第二目标模型用于渲染至所述第一目标模型的表面或所述第一目标模型的坑洞内;通过深度测试的方式,基于所述第二目标模型的渲染数据,在所述第一目标模型的指定区域渲染所述第二目标模型;根据所述第二目标模型所在场景的光照信息,在所述第一目标模型中渲染所述第二目标模型的光照效果。7.根据权利要求6所述的方法,其特征在于,通过深度测试的方式,基于所述第二目标模型的渲染数据,在所述第一目标模型的指定区域渲染第二目标模型的步骤,包括:根据所述第一目标模型的深度信息和所述第二目标模型的深度信息,确定所述第二目标模型与所述第一目标模型的相对位置;如果所述第二目标模型位于所述第一目标模型的上方,根据所述第二目标模型的渲染数据,在所述第一目标模型中所述第二目标模型对应的第一指定区域渲染所述第二目标模型;如果所述第二目标模型的部分模型或全部模型位于所述第一目标模型的下方,且所述第二目标模型的部分模型或全部模型位于所述第一目标模型的目标区域,根据所述第二目标模型的第三参考值,所述第一目标模型的深度信息,以及所述第二目标模型的渲染数据,在所述第一目标模型的第二指定区域渲染所述第二目标模型。8.根据权利要求7所述的方法,其特征在于,根据所述第二目标模型的第三参考值,所述第一目标模型的深度信息,以及所述第二目标模型的渲染数据,在所述第一目标模型的第二指定区域渲染所述第二目标模型的步骤,包括:根据所述第一目标模型的深度信息和所述第二目标模型的深度信息,确定所述第二目标模型在所述目标区域是否被所述第一目标模型遮挡;如果所述第二目标模型未被所述第一目标模型遮挡,根据所述第二目标模型的渲染数据,在所述第一目标模型中所述第二目标模型对应的第二指定区域渲染所述第二目标模型。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:如果所述第二目标模型的部分第二目标模型被所述第一目标模型遮挡,根据所述第二目标模型的第三参考值和所述模板缓冲区的模板值,从所述模板缓冲区中确定大于或等于所述第三参考值的模板值对应的第三待渲染区域;其中,所述第三参考值等于所述第一参考值;根据所述第二目标模型的渲染数据,在所述第一目标模型中所述第三待渲染区域对应的第三目标区域渲染所述第二目标模型中未被遮挡的部分模型。10.根据权利要求1所述的方法,其特征在于,所述第一目标模型的材质为不透明材质。11.一种坑洞效果的渲染装置,其特征在于,所述装置包括:获取模块,用于获取模块,用于获取第一目标模型的渲染数据,以及待渲染至所述第一目标模型上的坑洞模型的渲染数据;其中,所述坑洞模型的渲染数据包括第一参考值,所述
第一参考值用于:基于模板测试在所述第一目标模型的目标区域渲染所述坑洞模型;创建模块,用于创建所述第一目标模型的模板缓冲区,将所述第一参考值,存储于模板缓冲区中所述坑洞模型对应的待渲染区域;其中,所述模板缓冲区中,所述待渲染区域的模板值为所述第一参考值,除所述待渲染区域以外的区域的模板值为预设的初始模板值;坑洞渲染模块,用于通过模板测试的方式,基于所述坑洞模型的渲染数据,在所述第一目标模型中所述待渲染区域对应的目标区域渲染所述坑洞模型;目标渲染模块,用于根据所述第一目标模型的渲染数据,在除所述目标区域以外的区域渲染所述第一目标模型,得到具有坑洞效果的所述第一目标模型;其中,所述坑洞模型位于所述第一目标模型的下方。12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1-10任一项所述的坑洞效果的渲染方法。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1-10任一项所述的坑洞效果的渲染方法。

技术总结


本发明提供了一种坑洞效果的渲染方法、装置和电子设备,将坑洞模型的渲染数据中的第一参考值,存储于模板缓冲区中坑洞模型对应的待渲染区域;模板缓冲区中,待渲染区域的模板值为第一参考值;通过模板测试的方式,基于坑洞模型和第一目标模型的渲染数据,在第一目标模型中待渲染区域对应的目标区域渲染坑洞模型,在除目标区域以外的区域渲染第一目标模型,得到具有坑洞效果的第一目标模型。该方式中,将坑洞模型置于第一目标模型的下方,不考虑模型的深度,创建模板缓冲区,通过模板测试的方式,先渲染坑洞模型,然后渲染第一目标模型,以将第一目标模型下方的坑洞显示在第一目标模型表面,在不破坏第一目标模型的情况下,实现了坑洞效果的渲染,提高了场景的坑洞效果与制作效率。效率。效率。


技术研发人员:

肖威威

受保护的技术使用者:

网易(杭州)网络有限公司

技术研发日:

2022.06.16

技术公布日:

2022/11/8

本文发布于:2024-09-21 17:29:31,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/45611.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   目标   坑洞   参考值
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议