阴影渲染方法、装置、设备及计算机可读存储介质与流程

未命名 09-22 阅读:56 评论:0


1.本技术涉及计算机图形处理领域,尤其涉及一种阴影渲染方法、装置、设备及计算机可读存储介质。


背景技术:

2.在渲染管线的流程中,物体阴影的计算通常是通过模型本身法线方向和光照方向进行点积所获得的阴影区域,这样的阴影是根据光照光线实时移动的,无法像光影遮蔽(ambient occlusion,ao)这样提升模型本身的体积感。
3.光影遮蔽和全局间接光照(indirect illumination,gi)都是为了使得模型渲染时阴影更为丰富且更立体。但实时计算ao和gi需要消耗大量的计算资源,尤其是在处理复杂场景时,会导致游戏性能的下降,而且实现难度高,开发人员需要具备较高的水平,使用复杂的算法技术,对硬件的要求也很高。
4.传统方案只能绘制固定的颜色贴图来模拟ao和gi效果,导致模拟的阴影真实感差。


技术实现要素:

5.本技术至少部分的解决现有的阴影渲染使用固定的颜色贴图来模拟ao和gi效果,实现的阴影渲染的阴影真实感差的技术问题。
6.本技术第一方面提供了一种阴影渲染方法,方法包括:
7.获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;
8.根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;
9.将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;
10.通过所述实时阴影颜色对所述目标模型进行阴影渲染。
11.本技术第二方面提供了一种阴影渲染装置,包括:
12.获取模块,用于获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;
13.法线计算模块,用于根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;
14.插值模块,用于将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;
15.渲染模块,用于通过所述实时阴影颜色对所述目标模型进行阴影渲染。
16.本技术第三方面提供了一种阴影渲染装置,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述阴影渲染设备执行上述的阴影渲染方法的步骤。
17.本技术的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的阴影渲染方法的步骤。
18.本技术通过获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据,并根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型的蒙皮骨骼进行阴影渲染。本方式中,通过使用蒙皮骨骼的本身空间坐标数据和插值法等技术手段,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。
19.本技术的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
20.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
21.图1为本技术实施例中阴影渲染方法的一个实施例示意图;
22.图2为本技术实施例中阴影渲染方法的另一个实施例示意图;
23.图3为本技术实施例中阴影渲染方法的另一个实施例示意图;
24.图4为本技术实施例中阴影渲染装置的一个实施例示意图;
25.图5为本技术实施例中阴影渲染装置的另一个实施例示意图;
26.图6为本技术实施例中阴影渲染设备的一个实施例示意图。
具体实施方式
27.本技术实施例提供一种阴影渲染方法、装置、设备及计算机可读存储介质,通过获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据,并根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过所述实时阴影颜色对所述目标模型的蒙皮骨骼进行阴影渲染。本方式中,通过使用蒙皮骨骼的骨骼空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。
28.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.为便于理解,下面对本技术实施例的具体流程进行描述,请参阅图1,本技术实施例中阴影渲染方法的第一个实施例包括:
30.101、获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;
31.可以理解的是,本技术的执行主体可以为阴影渲染装置,还可以是终端或者服务
器,具体此处不做限定。本技术实施例以终端为执行主体为例进行说明。
32.在实际应用中,在三维软件中创建的目标模型基础上,需要为目标模型添加骨骼,由于骨骼与目标模型是相互独立的,为了让骨骼驱动目标模型产生合理的运动,需要把目标模型绑定到骨骼上,得到蒙皮骨骼,在本实施例中,目标模型绑定有蒙皮骨骼,蒙皮骨骼作为目标模型的一部分,在实际应用中,在蒙皮骨骼的动画过程中,需要对蒙皮骨骼进行实时的阴影渲染。
33.102、根据骨骼空间坐标数据计算对应的骨骼空间法线信息;
34.在本实施例中,需要将世界空间下的法线信息转换至骨骼空间,用于对颜色缓冲区中的初始阴影颜色进行插值,其中,世界空间是最外层的空间,可以被用于描述模型的绝对位置,每个模型在世界空间中都有独一无二的世界空间矩阵。世界空间就是3d场景中的对象位置,尺寸以及旋转。所有模型都以世界空间的位置(0,0,0)为中心放置,世界空间是由每个对象的转换所定义的,位移,旋转以及缩放,将通过世界空间矩阵来将模型顶点从自身模型空间转换到世界空间中。此外,在游戏中的每一个模型或者物体都有各自独立的坐标空间,模型有自己的前后左右,旋转或者是移动和缩放模型并不能改变它的前后左右,模型的顶点坐标是根据模型空间的原点定义的,而骨骼空间可以理解为蒙皮骨骼对应的模型空间,也就是骨骼空间。
35.在本实施例中使用的是ue(unreal engine,虚幻引擎)自带的“transform3x3martix”三向量转换节点,“transform3x3martix”是ue自带的转换函数,其具体功能是将任意一个向量转换到对应的xyz轴下对应的坐标,可以将世界空间下的法线自动转换到对应的一个xyz轴向下的空间,在本实施例中,通过将骨骼空间坐标数据输入至“transform3x3martix”函数,
[0036]“transform3x3martix”函数会将世界空间下的世界空间法线转换至骨骼空间坐标数据对应的骨骼空间下,得到骨骼空间法线信息。
[0037]
103、将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;
[0038]
法线信息其实也是由rgb三个通道组成的灰度数据信息,在本实施例中,可以将法线信息中任意的r或者g或者b通道的数据插值成想要的灰度信息,再将这个灰度信息乘以想要增加的阴影颜色。在实际应用中,颜色缓冲区是最终在显示屏硬件上显示颜色的gpu(graphics processing unit,图形处理器)显存区域,颜色缓冲区储存了每帧更新后的最终颜色值,图形流水线经过一系列测试,包括片段丢弃、颜色混合等,最终生成的像素颜色值都储存在颜色缓冲区中,在进行渲染时,将颜色缓冲区中的颜色提交给显示硬件显示,颜色缓冲区实时更新储存颜色数据,然后gpu通过图形输出口输出存储的颜色数据,在本实施例中,颜色缓冲区中存储的初始阴影颜色是实现自定义好的,也是开放给美术可以调整的参数,可以用适合的颜色或者适合的贴图,在进行阴影渲染时,通过骨骼空间的法线信息与颜色缓冲区中的初始阴影颜色进行插值混合,得到具有实时阴影效果的阴影颜色。
[0039]
104、通过实时阴影颜色对目标模型进行阴影渲染。
[0040]
在本实施例中,可遍历蒙皮骨骼中的各个网格,针对当前遍历的当前网格,可将当前网格的各个骨骼点的骨骼空间坐标数据从骨骼模型的坐标系映射到屏幕坐标系,得到当前网格的各个骨骼点在屏幕坐标系中的位置坐标;其次,可根据当前网格的各个骨骼点的
位置坐标,确定当前网格的各个骨骼点所构成的区域,并将确定的区域所包含的像素块作为当前网格对应的目标像素块。然后,可从当前网格的各个骨骼点对应的颜色缓冲区获取对应的实时阴影颜色,根据获取的实时阴影颜色对当前网格对应的像素块进行阴影渲染并输出。
[0041]
在本实施例中,通过获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据,并根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型的蒙皮骨骼进行阴影渲染。通过使用蒙皮骨骼本身的空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。
[0042]
请参阅图2,本技术实施例中阴影渲染方法的另一个实施例包括:
[0043]
201、响应于针对目标模型的阴影渲染指令,并根据阴影渲染指令确定目标模型蒙皮骨骼的待渲染骨骼点;
[0044]
在本实施例中,在蒙皮骨骼的动画过程中,实时生成阴影渲染指令,在阴影渲染指令中包括需要进行阴影渲染的待渲染骨骼点,其中,该阴影渲染指令可以指定需要进行阴影渲染的一个或多个待渲染骨骼点。
[0045]
202、确定待渲染骨骼点的骨骼名称,并确定骨骼名称对应的索引值;
[0046]
在本实施例中,对目标模型的蒙皮骨骼上的各个骨骼点均存在对应的骨骼名称,在确定蒙皮骨骼所有骨骼点中的待渲染骨骼点后,可以确定待渲染骨骼点的骨骼名称,进而根据骨骼名称确定对应的索引值。
[0047]
203、根据骨骼名称对应的索引值选取对应的多个属性寄存器,并从多个属性寄存器中获取目标模型对应的骨骼空间坐标数据;
[0048]
在本实施例中,基于各骨骼点的骨骼名称得到的各骨骼点对应的骨骼空间坐标数据需要预先存储,骨骼空间坐标数据存储在预设的属性寄存器中,在实际应用中,寄存器是gpu中的小型内存区域,着色器可在执行期间使用它们,寄存器用于存储着色器程序的来源和目标。在需要进行阴影渲染时,调用对应的骨骼名称,根据骨骼名称对应的索引值获取对应的骨骼空间坐标数据。
[0049]
204、根据骨骼空间坐标数据生成转换矩阵;
[0050]
需要说明的是,这个的骨骼空间坐标数据是每个蒙皮骨骼本身所在的骨骼空间中的坐标数据。
[0051]
205、根据转换矩阵将世界空间下的世界空间法线信息转换至骨骼空间,得到骨骼空间下的骨骼空间法线信息;
[0052]
在本实施例中,需要将世界空间下的法线信息转换至骨骼空间,用于对颜色缓冲区中的初始阴影颜色进行插值,在本实施例中使用的是ue(unreal engine,虚幻引擎)自带的“transform3x3martix”三向量转换节点,“transform3x3martix”是ue自带的转换函数,其具体功能是将任意一个向量转换到对应的xyz轴下对应的坐标,“transform3x3martix”函数会根据输入的骨骼空间坐标数据生成对应的转换矩阵,该转换矩阵用于将输入的任意一个向量转换至骨骼空间坐标数据对应的骨骼空间中。
[0053]
206、通过预设的平滑阶梯函数将骨骼空间法线信息进行插值,生成灰度值;
[0054]
由于法线信息其实也是由rgb三个通道组成的灰度数据信息,可以将骨骼空间法线信息中任意的r或者g或者b通道的数据通过平滑阶梯函数插值成想要的灰度信息,在实际应用中平滑阶梯函数即smoothstep函数,smoothstep可以用来生成0到1的平滑过渡值。
[0055]
207、根据灰度值与初始阴影颜色对应的第一数值,得到实时阴影颜色对应的第二数值;
[0056]
在本实施例中,可以对灰度值和初始阴影颜色的第一数值分别设置对应的权重,并根据对应的权重计算出实时阴影颜色的第二数值,此外,还可以将灰度值和初始阴影颜色的第一数值相乘,得到的数值作为实时阴影颜色的第二数值,本技术实施例不做限定。
[0057]
可以理解的是,这里的第一数值与第二数值可以是在rgb格式下的颜色数值,还可以是其他颜色格式的数值,具体此处不做限定。
[0058]
208、将第二数值输出至底色节点,通过底色节点将实时阴影颜色存储至颜色缓冲区中;
[0059]
在计算得到实时阴影颜色后,需要将实时阴影颜色存储直接输出到basecolor节点,ue就会自动将basecolor节点的实时阴影颜色储存到颜色缓冲区。
[0060]
209、通过实时阴影颜色对目标模型进行阴影渲染。
[0061]
需要说明的是,步骤209与步骤104类似,具体此处不再赘述。
[0062]
可以理解的是,在完成阴影渲染输出之前,还可以对实时阴影颜色采用其他渲染技术,例如,环境光遮蔽(ambient occlusion)、抗锯齿(anti-aliasing),提高阴影的渲染质量,具体此处不做限定。
[0063]
在本实施例中,通过预设的平滑阶梯函数将骨骼空间法线信息进行插值并与颜色缓冲区中的初始阴影颜色进行混合,得到实时阴影颜色,在本方式中,使用蒙皮骨骼本身的骨骼空间坐标数据计算骨骼空间法线,可以减少对gpu内存的读写和数据传输的开销,提高渲染效率,并且使用骨骼空间法线计算实时阴影颜色,可以更准确地计算物体表面的阴影效果,提高阴影渲染的精度和质量,使阴影渲染结果更加真实。
[0064]
请参阅图3,本技术实施例中阴影渲染方法的另一个实施例包括:
[0065]
301、获取目标模型的蒙皮骨骼的骨骼模型数据,其中,骨骼模型数据包括骨骼名称和骨骼空间坐标数据;
[0066]
在本实施例中,通过在数字内容创作(digital content creation,dcc)软件中确定所需要的目标模型的蒙皮骨骼的骨骼模型数据,并且,在dcc软件中对对应的蒙皮骨骼进行命名,得到骨骼名称,例如,可以对头部的蒙皮骨骼命名为”bip001head”,该骨骼名称明确指定到对应的骨骼空间坐标数据和骨骼空间。
[0067]
具体的,在dcc软件中确定所需要的目标模型的骨骼模型数据后,进行渲染效果需要在游戏开发引擎中进行阴影渲染,在本实施例中,主要使用ue(unreal engine)引擎进行游戏开发,在实际应用中,可以通过c++代码将目标模型的蒙皮骨骼的骨骼空间位置数据传递到ue中,并通过ue存储在对应的属性寄存器中,在本实施例中,需要对骨骼空间位置数据进行存储后,在进行阴影渲染时调用,这是因为本方案是通过骨骼位置与灯光方向进行操作而产生的方案,在这里只能获取到骨骼位置信息,而获取不到灯光信息,所以只能先储存对应的骨骼位置,再传递到引擎中去和灯光信息效果操作。
[0068]
需要说明的是,本实施例还可以应用于其他不同的渲染引擎或平台,提高了通用
性。还可以应用于各种类型的物体和场景,具有较好的可扩展性和通用性。
[0069]
302、存储骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值;
[0070]
在本实施例中,存储骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值包括:根据预设的变量创建函数生成三个存储变量,并将骨骼名称对应的骨骼空间坐标数据分别存储在三个存储变量中;生成三个存储变量对应的三个向量信息,并将三个向量信息分别寄存至对应的属性寄存器中;将属性寄存器的索引值作为骨骼名称和对应的骨骼空间坐标数据的索引值。
[0071]
进一步的,生成三个存储变量对应的三个向量信息,并将三个向量信息分别寄存至对应的属性寄存器中包括:根据预设的矩阵算法和三个存储变量生成对应的变量矩阵;将变量矩阵的每行数据分别作为对应的三个向量信息;将三个向量信息分别寄存至对应的属性寄存器中。
[0072]
具体的,通过预设的变量创建函数,即getcolumn函数创建了三个存储变量,例如名为invertbasisx、invertbasisy和invertbasisz的存储变量,分别存储骨骼空间坐标数据中的xyz轴坐标,通过预设的矩阵算法和存储变量生成对应的变量矩阵,可以理解为构建了一个矩阵,用矩阵的第0行、第1行、第2行分别去储存一个向量信息,这3个向量分别可以表达为p1,p2,p3即为骨骼方向信息,也就是向量信息,例如p1=(invertbasisx.x,invertbasisy.x,invertbasisz.x);p2=(invertbasisx.y,invertbasisy.y,invertbasisz.y);p3=(invertbasisx.z,invertbasisy.z,invertbasisz.z);将当前的向量信息指向一个属性寄存器,例如将p1的信息通过index=2寄存到了属性寄存器上,p2便是index=5的属性寄存器,那么在进行阴影渲染时,在引擎内部就可以通过自带的属性寄存器加上对应的索引值index拿到对应的骨骼空间坐标数据。
[0073]
在本实施例中,在进行阴影渲染前,获取目标模型的蒙皮骨骼的骨骼模型数据,根据预设的变量创建函数生成存储变量,并将骨骼名称对应的骨骼空间坐标数据存储在存储变量中;生成存储变量对应的向量信息,并将向量信息分别寄存至对应的属性寄存器中;将属性寄存器的索引值作为骨骼名称和对应的骨骼空间坐标数据的索引值,本方式中,通过事先将目标模型的蒙皮骨骼的骨骼模型数据存储在对应的属性寄存器中,在进行阴影渲染未能获得作为灯光的初始阴影颜色前,存储骨骼模型数据,避免骨骼模型数据的丢失。
[0074]
303、响应于针对目标模型的阴影渲染指令,并根据阴影渲染指令确定目标模型的蒙皮骨骼的待渲染骨骼点;
[0075]
304、确定待渲染骨骼点的骨骼名称,并确定骨骼名称对应的索引值;
[0076]
305、根据骨骼名称对应的索引值选取对应的多个属性寄存器,并从多个属性寄存器中获取目标模型对应的骨骼空间坐标数据;
[0077]
306、根据骨骼空间坐标数据生成转换矩阵;
[0078]
307、根据转换矩阵将世界空间下的世界空间法线信息转换至骨骼空间,得到骨骼空间下的骨骼空间法线信息;
[0079]
308、通过预设的平滑阶梯函数将骨骼空间法线信息进行插值,生成灰度值;
[0080]
309、根据灰度值与初始阴影颜色对应的第一数值进行,得到实时阴影颜色对应的第二数值;
[0081]
310、将第二数值输出至底色节点,通过底色节点将实时阴影颜色存储至颜色缓冲
区中;
[0082]
311、通过实时阴影颜色对目标模型进行阴影渲染。
[0083]
步骤303-步骤311与步骤201-步骤209类似,具体此处不再赘述。
[0084]
本实施例中,获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据,并根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型的蒙皮骨骼进行阴影渲染。通过使用蒙皮骨骼本身的空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性;提高了对不同渲染引擎或平台的适应性,提高了通用性。
[0085]
上面对本技术实施例中阴影渲染方法进行了描述,下面对本技术实施例中阴影渲染装置进行描述,请参阅图4,本技术实施例中阴影渲染装置的一个实施例包括:
[0086]
获取模块401,用于获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;
[0087]
法线计算模块402,用于根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;
[0088]
插值模块403,用于将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;
[0089]
渲染模块404,用于通过所述实时阴影颜色对所述目标模型进行阴影渲染。
[0090]
在本实施例中,通过获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据,并根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型的蒙皮骨骼进行阴影渲染。通过使用蒙皮骨骼本身的空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。
[0091]
请参阅图5,本技术实施例中阴影渲染装置的另一个实施例包括:
[0092]
获取模块401,用于获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;
[0093]
法线计算模块402,用于根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;
[0094]
插值模块403,用于将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;
[0095]
渲染模块404,用于通过所述实时阴影颜色对所述目标模型进行阴影渲染。
[0096]
在一种可行的实施方式中,所述获取模块401具体用于:
[0097]
响应于针对所述目标模型的阴影渲染指令,并根据所述阴影渲染指令确定所述目标模型的蒙皮骨骼的待渲染骨骼点;
[0098]
确定所述待渲染骨骼点的骨骼名称,并确定所述骨骼名称对应的索引值;
[0099]
根据所述骨骼名称对应的索引值选取对应的多个属性寄存器,并从所述多个属性寄存器中获取所述目标模型对应的骨骼空间坐标数据。
[0100]
在一种可行的实施方式中,所述法线计算模块402具体用于包括:
[0101]
根据所述骨骼空间坐标数据生成转换矩阵;
[0102]
根据所述转换矩阵将世界空间下的世界空间法线信息转换至骨骼空间,得到骨骼空间下的骨骼空间法线信息。
[0103]
在一种可行的实施方式中,所述插值模块403具体用于:
[0104]
通过预设的平滑阶梯函数将所述骨骼空间法线信息进行插值,生成灰度值;
[0105]
根据所述灰度值与所述初始阴影颜色对应的第一数值,得到实时阴影颜色对应的第二数值;
[0106]
将所述第二数值输出至底色节点,通过所述底色节点将所述实时阴影颜色存储至所述颜色缓冲区中。
[0107]
在一种可行的实施方式中,所述阴影渲染装置还包括:数据存储模块405,所述数据存储模块405包括:
[0108]
数据获取单元4051,用于获取所述目标模型的各个蒙皮骨骼的骨骼模型数据,其中,所述骨骼模型数据包括骨骼名称和骨骼空间坐标数据;
[0109]
存储单元4052,存储所述骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值。
[0110]
在一种可行的实施方式中,所述存储单元4052具体用于:
[0111]
根据预设的变量创建函数生成三个存储变量,并将所述骨骼名称对应的骨骼空间坐标数据分别存储在所述三个存储变量中;
[0112]
生成所述三个存储变量对应的三个向量信息,并将所述三个向量信息分别寄存至对应的属性寄存器中;
[0113]
将所述属性寄存器的索引值作为所述骨骼名称和对应的骨骼空间坐标数据的索引值。
[0114]
在一种可行的实施方式中,所述存储单元4052具体还用于:
[0115]
根据预设的矩阵算法和所述三个存储变量生成对应的变量矩阵;
[0116]
将所述变量矩阵的每行数据分别作为对应的三个向量信息;
[0117]
将所述三个向量信息分别寄存至对应的属性寄存器中。
[0118]
本实施例中,获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据,并根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型的蒙皮骨骼进行阴影渲染。通过使用蒙皮骨骼本身的空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性;提高了对不同渲染引擎或平台的适应性,提高了通用性。
[0119]
上面图4和图5从模块化功能实体的角度对本技术实施例中的中阴影渲染装置进行详细描述,下面从硬件处理的角度对本技术实施例中阴影渲染设备进行详细描述。
[0120]
图6是本技术实施例提供的一种阴影渲染设备的结构示意图,该阴影渲染设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括
一个或一个以上模块(图示没标出),每个模块可以包括对阴影渲染设备600中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在阴影渲染设备600上执行存储介质630中的一系列指令操作,以实现以下步骤:
[0121]
获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型进行阴影渲染。通过使用蒙皮骨骼本身的空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。
[0122]
可选的,上述获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据包括:响应于针对目标模型的阴影渲染指令,并根据阴影渲染指令确定目标模型的蒙皮骨骼的待渲染骨骼点;确定待渲染骨骼点的骨骼名称,并确定骨骼名称对应的索引值;根据骨骼名称对应的索引值选取对应的多个属性寄存器,并从多个属性寄存器中获取目标模型对应的骨骼空间坐标数据。
[0123]
上述方式通过索引值实现对骨骼名称对应的骨骼空间坐标数据的精准获取,避免在进行阴影渲染的过程中出现渲染错误的情况。
[0124]
可选的,上述根据骨骼空间坐标数据计算对应的骨骼空间法线信息包括:根据骨骼空间坐标数据生成转换矩阵;根据转换矩阵将世界空间下的世界空间法线信息转换至骨骼空间,得到骨骼空间下的骨骼空间法线信息。
[0125]
上述方式使用蒙皮骨骼本身的空间坐标数据生成转换矩阵计算法线信息,可以支持动态变形的物体的阴影渲染。
[0126]
可选的,上述将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色包括:通过预设的平滑阶梯函数将骨骼空间法线信息进行插值,生成灰度值;根据灰度值与初始阴影颜色对应的第一数值,得到实时阴影颜色对应的第二数值;将第二数值输出至底色节点,通过底色节点将实时阴影颜色存储至颜色缓冲区中。
[0127]
上述方式使用世界空间法线计算阴影颜色,可以更准确地计算物体表面的阴影效果,提高渲染的精度和质量,使渲染结果更加真实。
[0128]
可选的,在上述获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据之前,还包括:获取目标模型上午蒙皮骨骼的骨骼模型数据,其中,骨骼模型数据包括骨骼名称和骨骼空间坐标数据;存储骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值。
[0129]
上述方式通过将骨骼名称和骨骼空间坐标数据在进行阴影渲染前进行存储,避免在阴影渲染未获取到颜色缓冲区中灯光对应的颜色数据前骨骼模型数据的丢失。
[0130]
可选的,上述存储骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值包括:根据预设的变量创建函数生成三个存储变量,并将骨骼名称对应的骨骼空间坐标数据分别存储在三个存储变量中;生成三个存储变量对应的三个向量信息,并将三个向量信息分别寄存至对应的属性寄存器中;将属性寄存器的索引值作为骨骼名称和对应的骨骼空间坐标数据的索引值。
[0131]
上述方式通过将数据存储在属性寄存器中,可以减少对gpu内存的读写和数据传输的开销,提高渲染效率。
[0132]
可选的,上述生成三个存储变量对应的三个向量信息,并将三个向量信息分别寄存至对应的属性寄存器中包括:根据预设的矩阵算法和三个存储变量生成对应的变量矩阵;将变量矩阵的每行数据分别作为对应的三个向量信息;将三个向量信息分别寄存至对应的属性寄存器中。
[0133]
上述方式通过将存储变量转换成向量信息进行存储,使得数据格式符合属性寄存器的存储条件,实现骨骼空间坐标数据的存储。
[0134]
阴影渲染设备600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作系统631,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图6示出的阴影渲染设备结构并不构成对本技术提供的阴影渲染设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0135]
本技术还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行以下步骤:
[0136]
获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;根据骨骼空间坐标数据计算对应的骨骼空间法线信息;将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过实时阴影颜色对目标模型进行阴影渲染。通过使用蒙皮骨骼本身的空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。
[0137]
可选的,上述获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据包括:响应于针对目标模型的阴影渲染指令,并根据阴影渲染指令确定目标模型的蒙皮骨骼的待渲染骨骼点;确定待渲染骨骼点的骨骼名称,并确定骨骼名称对应的索引值;根据骨骼名称对应的索引值选取对应的多个属性寄存器,并从多个属性寄存器中获取目标模型对应的骨骼空间坐标数据。
[0138]
上述方式通过索引值实现对骨骼名称对应的骨骼空间坐标数据的精准获取,避免在进行阴影渲染的过程中出现渲染错误的情况。
[0139]
可选的,上述根据骨骼空间坐标数据计算对应的骨骼空间法线信息包括:根据骨骼空间坐标数据生成转换矩阵;根据转换矩阵将世界空间下的世界空间法线信息转换至骨骼空间,得到骨骼空间下的骨骼空间法线信息。
[0140]
上述方式使用蒙皮骨骼本身的空间坐标数据生成转换矩阵计算法线信息,可以支持动态变形的物体的阴影渲染。
[0141]
可选的,上述将骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色包括:通过预设的平滑阶梯函数将骨骼空间法线信息进行插值,生成灰度值;根据灰度值与初始阴影颜色对应的第一数值,得到实时阴影颜色对应的第二数值;将第二数值输出至底色节点,通过底色节点将实时阴影颜色存储至颜色缓冲区中。
[0142]
上述方式使用世界空间法线计算阴影颜色,可以更准确地计算物体表面的阴影效果,提高渲染的精度和质量,使渲染结果更加真实。
[0143]
可选的,在上述获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据之前,还包括:
获取目标模型的蒙皮骨骼的骨骼模型数据,其中,骨骼模型数据包括骨骼名称和骨骼空间坐标数据;存储骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值。
[0144]
上述方式通过将骨骼名称和骨骼空间坐标数据在进行阴影渲染前进行存储,避免在阴影渲染未获取到颜色缓冲区中灯光对应的颜色数据前骨骼模型数据的丢失。
[0145]
可选的,上述存储骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值包括:根据预设的变量创建函数生成三个存储变量,并将骨骼名称对应的骨骼空间坐标数据分别存储在三个存储变量中;生成三个存储变量对应的三个向量信息,并将三个向量信息分别寄存至对应的属性寄存器中;将属性寄存器的索引值作为骨骼名称和对应的骨骼空间坐标数据的索引值。
[0146]
上述方式通过将数据存储在属性寄存器中,可以减少对gpu内存的读写和数据传输的开销,提高渲染效率。
[0147]
可选的,上述生成三个存储变量对应的三个向量信息,并将三个向量信息分别寄存至对应的属性寄存器中包括:根据预设的矩阵算法和三个存储变量生成对应的变量矩阵;将变量矩阵的每行数据分别作为对应的三个向量信息;将三个向量信息分别寄存至对应的属性寄存器中。
[0148]
上述方式通过将存储变量转换成向量信息进行存储,使得数据格式符合属性寄存器的存储条件,实现骨骼空间坐标数据的存储。
[0149]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0150]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0151]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种阴影渲染方法,其特征在于,所述阴影渲染方法包括:获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过所述实时阴影颜色对所述目标模型进行阴影渲染。2.根据权利要求1所述的阴影渲染方法,其特征在于,所述获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据包括:响应于针对所述目标模型的阴影渲染指令,并根据所述阴影渲染指令确定所述目标模型的蒙皮骨骼的待渲染骨骼点;确定所述待渲染骨骼点的骨骼名称,并确定所述骨骼名称对应的索引值;根据所述骨骼名称对应的索引值选取对应的属性寄存器,并从所述属性寄存器中获取所述目标模型对应的骨骼空间坐标数据。3.根据权利要求1所述的阴影渲染方法,其特征在于,所述根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息包括:根据所述骨骼空间坐标数据生成转换矩阵;根据所述转换矩阵将世界空间下的世界空间法线信息转换至骨骼空间,得到骨骼空间下的骨骼空间法线信息。4.根据权利要求1所述的阴影渲染方法,其特征在于,所述将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色包括:通过预设的平滑阶梯函数将所述骨骼空间法线信息进行插值,生成灰度值;根据所述灰度值与所述初始阴影颜色对应的第一数值,得到实时阴影颜色对应的第二数值;将所述第二数值输出至底色节点,通过所述底色节点将所述实时阴影颜色存储至所述颜色缓冲区中。5.根据权利要求1-4中任一项所述的阴影渲染方法,其特征在于,在所述获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据之前,还包括:获取所述目标模型的蒙皮骨骼的骨骼模型数据,其中,所述骨骼模型数据包括骨骼名称和骨骼空间坐标数据;存储所述骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值。6.根据权利要求5所述的阴影渲染方法,其特征在于,所述存储所述骨骼名称和对应的骨骼空间坐标数据,并生成对应的索引值包括:根据预设的变量创建函数生成三个存储变量,并将所述骨骼名称对应的骨骼空间坐标数据分别存储在所述三个存储变量中;生成所述三个存储变量对应的三个向量信息,并将所述三个向量信息分别寄存至对应的属性寄存器中;将所述属性寄存器的索引值作为所述骨骼名称和对应的骨骼空间坐标数据的索引值。7.根据权利要求6所述的阴影渲染方法,其特征在于,所述生成所述三个存储变量对应的三个向量信息,并将所述三个向量信息分别寄存至对应的属性寄存器中包括:
根据预设的矩阵算法和所述三个存储变量生成对应的变量矩阵;将所述变量矩阵的每行数据分别作为对应的三个向量信息;将所述三个向量信息分别寄存至对应的属性寄存器中。8.一种阴影渲染装置,其特征在于,所述阴影渲染装置包括:获取模块,用于获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;法线计算模块,用于根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;插值模块,用于将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;渲染模块,用于通过所述实时阴影颜色对所述目标模型进行阴影渲染。9.一种阴影渲染设备,其特征在于,所述阴影渲染设备包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述阴影渲染设备执行如权利要求1-7中任意一项所述的阴影渲染方法。10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任意一项所述阴影渲染方法。

技术总结
本申请涉及计算机图形处理领域,提供了一种阴影渲染方法、装置、设备及计算机可读存储介质,其中,该方法包括:获取目标模型的蒙皮骨骼对应的骨骼空间坐标数据;根据所述骨骼空间坐标数据计算对应的骨骼空间法线信息;将所述骨骼空间法线信息与颜色缓冲区中的初始阴影颜色进行插值运算,得到实时阴影颜色;通过所述实时阴影颜色对所述目标模型进行阴影渲染。本方式中,通过使用蒙皮骨骼的骨骼空间坐标数据,获得的实时阴影数据可跟随骨骼动画和角色动画实时更新,实现高效、精确和实时的阴影渲染效果,解决精度问题,实现更加准确的阴影渲染效果,增加了阴影的真实性。增加了阴影的真实性。增加了阴影的真实性。


技术研发人员:张旭东 冯苗苗
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.05.15
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐