一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

渲染模型的方法、装置及电子设备与流程

2022-05-18 02:12:42 来源:中国专利 TAG:


1.本发明涉及图形渲染领域,具体而言,涉及一种渲染模型的方法、装置及电子设备。


背景技术:

2.渲染引擎在对待渲染模型进行渲染时会按照特定顺序进行绘制,现有技术中采用渲染队列的方式解决顺序问题,例如,通过使用队列标签来决定模型归属于哪个渲染队列。
3.另外,现有技术通常采用alpha test(透明度测试)或者ab(alpha blend,透明度混合)的方式实现透明效果。但是,在现有技术中,对半透明的待渲染模型进行渲染时,保证渲染顺序的正确性对于渲染的质量非常重要。例如,图1中a是半透明的待渲染组件,b是不透明的待渲染组件,图2中a和b都是半透明的待渲染组件。在图1和图2两种情况下,如果待渲染组件的渲染顺序错误,则会产生错误的渲染效果。


技术实现要素:

4.本发明实施例提供了一种渲染模型的方法、装置及电子设备,以至少解决由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的技术问题。
5.根据本发明实施例的一个方面,提供了一种渲染模型的方法,包括:获取待渲染模型;将待渲染模型划分为多个待渲染组件;基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序;基于渲染顺序对多个待渲染组件进行渲染,得到目标模型。
6.进一步地,渲染模型的方法还包括:获取待渲染模型的模型类型;基于模型类型将待渲染模型划分为多个待渲染组件。
7.进一步地,渲染模型的方法还包括:获取待渲染模型所对应的空间信息以及待渲染模型所对应的光照模型;根据空间信息以及光照模型确定多个待渲染组件所对应的法线信息,其中,光照信息至少包括法线信息;基于法线信息确定多个待渲染组件在渲染引擎中的渲染顺序。
8.进一步地,渲染模型的方法还包括:在获取待渲染模型所对应的光照模型之后,基于光照模型确定待渲染模型所包含的多个面片组件的受光比例;基于受光比例对待渲染模型所包含的多个面片组件进行筛选处理,得到筛选后的待渲染模型。
9.进一步地,渲染模型的方法还包括:基于光照模型确定多个面片组件中每个面片组件的第一区域以及第二区域,其中,第一区域的亮度值高于第二区域的亮度值;确定第一区域所对应的第一顶点数量以及第二区域对应的第二顶点数量;根据第一顶点数量以及第二顶点数量确定每个面片组件对应的顶点总数;计算第一顶点数量与顶点总数的比值,得到每个面片组件所对应的受光比例。
10.进一步地,渲染模型的方法还包括:根据受光比例从多个面片组件中筛选出至少
一个目标面片组件,其中,至少一个目标面片组件的受光比例大于预设受光比例;基于至少一个目标面片组件得到筛选后的待渲染模型。
11.进一步地,渲染模型的方法还包括:基于空间信息确定多个待渲染组件中每个待渲染组件所对应的点云数据;从点云数据中筛选出顶点坐标处于预设范围的目标点云数据;计算光照模型与目标点云数据之间的目标向量;基于目标向量确定每个待渲染组件所对应的法线信息。
12.进一步地,上述基于法线信息确定多个待渲染组件在渲染引擎中的渲染顺序,包括:步骤1,获取当前待渲染组件所对应的渲染标识;步骤2,根据当前待渲染组件在待渲染模型中的位置从多个待渲染组件中确定叠加组件;步骤3,基于叠加组件对当前待渲染组件进行叠加处理,得到叠加后的当前待渲染组件;步骤4,计算叠加后的当前待渲染组件的交汇比,其中,交汇比表征了与法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的交汇比例;步骤5,在叠加后的当前待渲染组件的交汇比大于或等于预设交汇比时,对渲染标识进行加一处理,得到更新后的渲染标识;步骤6,基于更新后的渲染标识确定多个待渲染组件在渲染引擎中的渲染顺序;重复执行步骤1至步骤5,直至叠加后的当前待渲染组件的交汇比小于预设交汇比,并在叠加后的当前待渲染组件的交汇比小于预设交汇比时,确定更新后的渲染标识为当前待渲染组件的目标渲染标识。
13.进一步地,渲染模型的方法还包括:确定法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的射线交汇区域;根据射线交汇区域与叠加后的当前待渲染组件之间的面积比值,确定当前待渲染组件所对应的交汇比。
14.进一步地,渲染模型的方法还包括:在确定法线信息所对应的射线与当前待渲染组件进行交汇的射线交汇区域之前,确定当前待渲染组件在待渲染模型中的当前位置;基于当前位置确定当前待渲染组件与其他待渲染组件之间的叠加区域;从当前待渲染组件所对应的顶点中去除叠加区域所对应的顶点,得到处理后的当前待渲染组件。
15.进一步地,渲染模型的方法还包括:根据多个待渲染组件所对应的目标渲染标识对多个待渲染组件进行排序,得到多个待渲染组件的渲染顺序;按照多个待渲染组件的渲染顺序依次对每个待渲染组件上的顶点进行渲染,得到渲染后的待渲染组件;对渲染后的待渲染组件进行合并,得到目标模型。
16.根据本发明实施例的另一方面,还提供了一种渲染模型的装置,包括:获取模块,用于获取待渲染模型;划分模块,用于将待渲染模型划分为多个待渲染组件;确定模块,用于基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序;渲染模块,用于基于渲染顺序对多个待渲染组件进行渲染,得到目标模型。
17.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的渲染模型的方法。
18.根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的渲染模型的方法。
19.在本发明实施例中,采用根据光照信息确定多个待渲染组件在渲染引擎中的渲染
顺序的方式,在获取待渲染模型之后,将待渲染模型划分为多个待渲染组件,并基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,从而基于渲染顺序对多个待渲染组件进行渲染,得到目标模型。
20.由上述内容可知,在本技术中,通过多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,从而实现了在对待渲染模型进行渲染时,自动对多个待渲染组件进行排序的效果,避免了采用手工方式处理待渲染模型时存在的工作量大并且容易出错的问题,节约了时间成本,增强了渲染过程中的可控性。另外,由于渲染引擎自身的渲染顺序也是基于游戏中的光照信息所确定的,因此,本技术通过根据光照信息所确定的多个待渲染组件的渲染顺序与渲染引擎自身的渲染顺序是相同的,从而解决了现有技术中由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的问题,进而提升了待渲染模型的渲染效果,
21.由此可见,通过本技术的技术方案,达到了自动确定多个待渲染组件在渲染引擎中的渲染顺序的目的,从而实现了提高渲染效率的技术效果,进而解决了由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的技术问题。
附图说明
22.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
23.图1是一种可选的待渲染组件的示意图;
24.图2是一种可选的待渲染组件的示意图;
25.图3是根据本发明实施例的一种可选的渲染模型的方法的流程图;
26.图4是根据本发明实施例的一种可选的待渲染模型的示意图;
27.图5是根据本发明实施例的一种可选的球形光照矩阵的示意图;
28.图6是根据本发明实施例的一种可选的阴影映射的示意图;
29.图7是根据本发明实施例的一种可选的生成模型渲染系统的流程图;
30.图8是根据本发明实施例的一种可选的渲染效果的示意图;
31.图9是根据本发明实施例的一种可选的渲染效果的示意图;
32.图10是根据本发明实施例的渲染模型的装置的示意图。
具体实施方式
33.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
34.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
35.为了便于描述,以下对本发明实施例涉及的部分名词或术语进行说明:
36.点云:点云是指目标表面特性的海量点集合,渲染引擎可通过点云获取一些数据。
37.法线:是指始终垂直于某平面的直线,在几何学中,法线指平面上垂直于曲线在某点的切线的一条线。法线也应用于光学的平面镜反射上。
38.uv:纹理贴图坐标的简称,与空间模型的x、y、z轴类似,定义了图片上每个点的位置信息。
39.实施例1
40.根据本发明实施例,提供了一种渲染模型的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
41.另外,还需要说明的是,一种模型渲染系统可作为本技术中的渲染模型的方法的执行主体。其中,模型渲染系统至少包括houdini sop模块以及基于vex语言编译的程序单元,houdini sop模块具有处理几何体数据、修改数据以及存储数据的功能,基于vex语言编译的程序单元中则内置丰富的可供开发使用的图形函数库,方便高效。
42.图3是根据本发明实施例的渲染模型的方法的流程图,如图3所示,该方法包括如下步骤:
43.步骤s302,获取待渲染模型。
44.在步骤s302中,待渲染模型可以是游戏中的头发模型,其中,头发模型可以是卷发模型、长发模型、短发模型以及直发模型,头发模型还可以是丸子头头发模型、双马尾又发模型以及单马尾头发模型。另外,操作人员可通过在模型渲染系统中输入待渲染模型的相关参数信息,从而在模型渲染系统中生成对应的待渲染模型,或者,操作人员可在模型制作软件中制作待渲染模型,在制作完成之后,将待渲染模型导入至模型渲染系统中,从而模型渲染系统即可获取到待渲染模型。
45.步骤s304,将待渲染模型划分为多个待渲染组件。
46.在步骤s304中,在头发模型输入至模型渲染系统中之后,模型渲染系统可按照计算机图形学对头发模型进行划分处理。其中,头发模型中至少包含位置、法线、uv、材质、切线、副切线、顶点色信息等数据信息。
47.可选的,如图4所示,模型渲染系统可将头发模型划分为了7个待渲染组件,分别是“neiceng”、“zhuti”、“waiceng1”、“waiceng2”、“waiceng3”、“mawei”以及“liuhai”。需要注意到的是,组件的命名将直接决定后续待渲染组件的渲染优先级,根据渲染原理,待渲染模型的渲染顺序为从里向外进行渲染,即首先渲染最里层的待渲染组件,最后渲染最外层的待渲染组件。例如,图4中7个待渲染组件的渲染顺序为“neiceng”、“zhuti”、“waiceng1”、“waiceng2”、“waiceng3”、“mawei”、“liuhai”。
48.进一步地,模型渲染系统可按照自然逻辑将头发模型拆分为多个待渲染组件。例
如,如图4所示,模型渲染系统按照自然逻辑将图4中的头发模型划分出马尾、刘海、丸子等待渲染组件。
49.步骤s306,基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序。
50.在步骤s306中,模型渲染系统可获取多个待渲染组件所对应的光照信息,例如,在图4中的头发模型中,7个待渲染组件对应有7个光照信息,每个待渲染组件对应的光照信息中至少包括法线信息。在获取到每个待渲染组件对应的光照信息之后,模型渲染系统即可通过法线信息确定每个待渲染组件在渲染引擎中的渲染顺序。
51.需要注意到的是,通过多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,实现了对多个待渲染组件的自动排序,避免了采用手工方式处理待渲染模型时存在的工作量大并且容易出错的问题,节约了时间成本,增强了渲染过程中的可控性。
52.步骤s308,基于渲染顺序对多个待渲染组件进行渲染,得到目标模型。
53.在步骤s308中,在得到多个待渲染组件之间的渲染顺序之后,模型渲染系统可通过渲染引擎按照渲染顺序分别对每个待渲染组件进行渲染。具体的,渲染引擎可根据多个待渲染组件的渲染顺序依次对每个待渲染组件上的顶点进行渲染,得到渲染后的待渲染组件,然后对渲染后的待渲染组件进行合并,得到目标模型。其中,目标模型是对待渲染模型渲染后所得到的模型。
54.需要注意到的是,在现有技术中,通常采用透明度测试的方式或者透明度混合的方式处理半透明的待渲染模型。而采用透明度测试的方式处理半透明的待渲染模型时,产生的效果很极端,要么完全透明要么完全不透明,因此,透明度测试的方式根本无法得到真正的半透明效果。
55.另外,采用透明度混合的方式处理半透明的待渲染模型虽然可得到真正的半透明效果。但是,使用透明度混合的方式时需要关闭渲染引擎中的深度写入的功能,而在关闭深入写入的功能之后,则需要操作人员要非常小心物体的渲染顺序,否则,一旦渲染顺序错误,便会造成渲染效果差的问题。
56.然而,虽然待渲染组件的渲染顺序在渲染过程中有着极为重要的作用,但是现有技术中没有自动确定多个待渲染组件的渲染顺序的工具,因此,操作人员不得不通过手工方式确定多个待渲染组件的渲染顺序,从而导致操作人员的工作量增多的问题。因此,本技术通过光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,不仅实现了提高渲染质量的效果,还避免了采用手工方式处理待渲染模型时存在的工作量大并且容易出错的问题。
57.基于上述步骤s302至步骤s308的内容可知,在本发明实施例中,采用根据光照信息确定多个待渲染组件在渲染引擎中的渲染顺序的方式,在获取待渲染模型之后,将待渲染模型划分为多个待渲染组件,并基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,从而基于渲染顺序对多个待渲染组件进行渲染,得到目标模型。
58.由上述内容可知,在本技术中,通过多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,从而实现了在对待渲染模型进行渲染时,自动对多个待渲染组件进行排序的效果,避免了采用手工方式处理待渲染模型时存在的工作量大并
且容易出错的问题,节约了时间成本,增强了渲染过程中的可控性。另外,由于渲染引擎自身的渲染顺序也是基于游戏中的光照信息所确定的,因此,本技术通过根据光照信息所确定的多个待渲染组件的渲染顺序与渲染引擎自身的渲染顺序是相同的,从而解决了现有技术中由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的问题,进而提升了待渲染模型的渲染效果,
59.由此可见,通过本技术的技术方案,达到了自动确定多个待渲染组件在渲染引擎中的渲染顺序的目的,从而实现了提高渲染效率的技术效果,进而解决了由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的技术问题。
60.在一种可选的实施例中,模型渲染系统首先获取待渲染模型的模型类型,然后基于模型类型将待渲染模型划分为多个待渲染组件。
61.可选的,待渲染模型可以是游戏中虚拟角色的头发模型,头发模型本身是一种半透明的待渲染模型。其中,头发模型的模型类型表征头发的长度、曲直以及造型等特征。例如,根据模型类型划分,头发模型可以是丸子头头发模型、单马尾头发模型、双马尾头发模型、长发模型、短发模型以及卷发模型等。
62.进一步地,在模型渲染系统获取到头发模型的模型类型之后,模型渲染系统可基于模型类型将待渲染模型划分为多个待渲染组件。例如,如图4所示,在丸子头造性的头发模型中,模型渲染系统可将该头发模型按照自然逻辑进行划分,从而将头发模型划分为“liuhai”、“neicneg”“zhuti”等多个待渲染组件。容易注意到的是,每个待渲染组件对应了头发模型上的一个区域,例如,“liuhai”对应了头发模型中的刘海区域。
63.需要注意的是,通过将待渲染模型划分为多个待渲染组件分别进行渲染,可降低渲染过程中的计算量,提升渲染效率。另外,对于不同区域分别渲染,可实现更加多样化的渲染,提升了渲染质量。
64.在一种可选的实施例中,模型渲染系统可基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序。具体的,模型渲染系统首先获取待渲染模型所对应的空间信息以及待渲染模型所对应的光照模型,然后根据空间信息以及光照模型确定多个待渲染组件所对应的法线信息,最后基于法线信息确定多个待渲染组件在渲染引擎中的渲染顺序。其中,光照信息至少包括法线信息。
65.可选的,上述待渲染模型对应的空间信息可通过sdf(signed distance field,可视化距离场)进行表示,其中,sdf是一种有符号的距离场,另外,sdf除具有符号之外,还具有大小的信息。因此,模型渲染系统运用sdf可在待渲染模型的基础上生成一个模型包裹体,即在待渲染模型的边缘上生成一层包裹,整个待渲染模型处于该模型包裹体中,最终,模型渲染系统在模型包裹体的基础上生成点云。
66.进一步地,为了方便理解,可将点云视为是一种光照矩阵,如图5所示,图5示出了根据拓展后的光照算法所模拟出的一种球形光照矩阵。需要说明的是,光照矩阵是一种虚拟化的概念。
67.可选的,上述光照模型可以是游戏中的光源模型,光照模型可发出光亮,从而照射到待渲染模型上,以使待渲染模型得到光照信息。需要注意到的是,在本技术中,光照模型可以是一个,也可以是多个。
68.需要注意到的是,由于渲染引擎自身的渲染顺序也是基于游戏中的光照信息所确定的,因此,通过根据光照信息所确定的多个待渲染组件的渲染顺序与渲染引擎自身的渲染顺序是相同的,从而解决了现有技术中由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的问题,进而提升了待渲染模型的渲染效果。
69.在一种可选的实施例中,模型渲染系统在获取待渲染模型所对应的光照模型之后,将基于光照模型确定待渲染模型所包含的多个面片组件的受光比例,并基于受光比例对待渲染模型所包含的多个面片组件进行筛选处理,得到筛选后的待渲染模型。
70.可选的,模型渲染系统首先基于光照模型确定多个面片组件中每个面片组件的第一区域以及第二区域,然后确定第一区域所对应的第一顶点数量以及第二区域对应的第二顶点数量,从而根据第一顶点数量以及第二顶点数量确定每个面片组件对应的顶点总数,最后计算第一顶点数量与顶点总数的比值,得到每个面片组件所对应的受光比例。其中,第一区域的亮度值高于第二区域的亮度值。
71.具体的,模型渲染系统可利用shadow mapping(阴影映射)原理对待渲染模型进行光照化计算。基于光学的基本规范,光照模型可对待渲染模型进行布光,光照后待渲染模型会产生亮部、暗部以及阴影。其中,面片组件的受光比例是影响生成亮部、暗部以及阴影的主要原因。例如,如图6所示,一个面片组件在受到光照后。由于前后遮挡的原因,会生成阴影,模型渲染系统可通过这一属性确定面片组件的受光面以及背光面。其中,受光面即为面片组件的第一区域,背光面即为面片组件的第二区域。
72.另外,模型渲染系统会将亮部和暗部信息存储到面片的顶点上。在此基础上,针对一个面片组件,模型渲染系统分别计算该面片组件中的受光面的第一顶点数量以及背光面的第二顶点数量,并将第一顶点数量与第二顶点数量进行求和,得到该面片组件的顶点总数。最后,模型渲染系统用过计算第一顶点数量和顶点总数的比值,即可得到该面片组件的受光比例。
73.可选的,在通过上述方法得到每个面片组件的受光比例之后,模型渲染系统根据受光比例从多个面片组件中筛选出至少一个目标面片组件,并基于至少一个目标面片组件得到筛选后的待渲染模型。其中,至少一个目标面片组件的受光比例大于预设受光比例。
74.具体的,模型渲染系统可预先设置有筛选阈值,从而在一个面片组件的受光比例大于或者等于该筛选阈值时,确定该面片组件为目标面片组件,在一个面片组件的受光比例小于该筛选阈值时,确定该面片组件不是目标面片组件。需要注意到的是,筛选阈值可由操作人员根据不同的待渲染模型进行设置。
75.在一种可选的实施例中,模型渲染系统可根据空间信息以及光照模型确定多个待渲染组件所对应的法线信息。具体的,模型渲染系统首先基于空间信息确定多个待渲染组件中每个待渲染组件所对应的点云数据;然后从点云数据中筛选出顶点坐标处于预设范围的目标点云数据,从而计算光照模型与目标点云数据之间的目标向量,进而基于目标向量确定每个待渲染组件所对应的法线信息。
76.可选的,在模型渲染系统运用sdf在待渲染模型的基础上生成一个模型包裹体之后,模型包裹体便是待渲染模型所在的空间信息。在此基础上,模型渲染系统可生成中每个待渲染组件所对应的点云数据,然后从点云数据中筛选出目标点云数据,从而根据光照模
型与目标点云数据得到目标向量,并根据目标向量确定每个待渲染组件所对应的法线信息。
77.具体的,模型渲染系统可通过以下代码确定法线信息:
78.//calculate point cloud
79.int handle=pcopen(1,“p”,@p,0.1,10);//对1号端口模型位置坐标以半径为0.1米,搜索最多10个顶点进行搜索。
80.vector head_p=pcfilter(handle,“p”);//过滤出搜索到的顶点坐标。
81.v@n=head_p

v@p;//搜索到顶点坐标与光照模型位置相减得到向量方向,并把向量存到法线上,存在法线上方便观察。
82.//custon ray
83.vector pos;
84.vector uvw;
85.int prim=intersect(2,@p,v@n,pos,uvw);
86.if(prim》=0){
87.@p=primuv(2,muv,prim,uvw);
88.}
89.v@cd=set(0,0,0)
90.在上述程序中,首先通过点云函数以1号端口模型的位置信息为原点,并根据0.1米距离为半径、最多查找10个顶点的条件,在附近区域查找多个顶点。其中,上述0.1米为根据sdf预设的参数值,每个顶点都对应一个点云数据。然后,在确定多个顶点之后,模型渲染系统通过pcfilter函数对多个顶点进行过滤,从而得到目标顶点,其中,目标顶点对应的数据为目标点云数据。具体的,模型渲染系统获取每个顶点对应的顶点坐标。在一个顶点处于预设范围内时,确定该顶点为目标顶点。最后,在获取得到目标点云数据之后,模型渲染系统通过目标点云数据的位置坐标与光照模型的位置坐标相减,得到目标向量。其中,模型渲染系统可根据目标向量的方向确定待渲染组件所对应的法线信息。
91.另外,运用intersect函数计算射线与待渲染模型的交点,如果有错误或没有相交返回-1;由此判断,如有相交点,点云的位置等于2号端口模型的位置,把点投射到待渲染模型上。
92.在一种可选的实施例中,在得到每个待渲染组件的法线信息之后,模型渲染系统可通过以下步骤确定多个待渲染组件在渲染引擎中的渲染顺序:
93.步骤1,获取当前待渲染组件所对应的渲染标识;步骤2,根据当前待渲染组件在待渲染模型中的位置从多个待渲染组件中确定叠加组件;步骤3,基于叠加组件对当前待渲染组件进行叠加处理,得到叠加后的当前待渲染组件;步骤4,计算叠加后的当前待渲染组件的交汇比,其中,交汇比表征了与法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的交汇比例;步骤5,在叠加后的当前待渲染组件的交汇比大于或等于预设交汇比时,对渲染标识进行加一处理,得到更新后的渲染标识;步骤6,基于更新后的渲染标识确定多个待渲染组件在渲染引擎中的渲染顺序;重复执行步骤1至步骤5,直至叠加后的当前待渲染组件的交汇比小于预设交汇比,并在叠加后的当前待渲染组件的交汇比小于预设交汇比时,确定更新后的渲染标识为当前待渲染组件的目标渲染标识。
94.可选的,模型渲染系统初始化时,模型渲染系统可根据每个渲染组件在待渲染模型中的位置,生成每个渲染组件所对应的渲染标识,其中,越靠近里层位置的渲染组件的渲染标识越小。
95.进一步地,以一个渲染标识为id1的待渲染组件为例。其中,待渲染组件id1为最里层的渲染组件。模型渲染系统根据待渲染组件id1在待渲染模型中的位置,可确定与待渲染组件id1有叠加的待渲染组件id2。在此基础上,模型渲染系统将待渲染组件id1与待渲染组件id2视为一个整体(即叠加后的当前待渲染组件),随后,基于该整体,模型渲染系统计算待渲染组件id1的交汇比,并且判断待渲染组件id1的交汇比与预设交汇比的大小关系。如果待渲染组件id1的交汇比大于或者等于预设交汇比,则将待渲染组件id1的渲染标识进行加一,即待渲染组件id1对应的渲染组件的渲染标识更新为id2。如果待渲染组件id1的交汇比小于预设交汇比,则不对渲染标识进行改变。
96.在实际过程中,所有的待渲染组件都会同时执行上述过程,从而在每一个渲染组件对应的交汇比大于或者等于预设交汇比时,都会更新对应的渲染标识。另外,模型渲染系统还将重复执行上述步骤1至步骤5,直至待渲染组件的交汇比小于预设交汇比。最后,在叠加后的当前待渲染组件的交汇比小于预设交汇比时,模型渲染系统确定最后更新后的渲染标识为渲染组件的目标渲染标识。
97.需要注意到的是,通过上述内容,交汇比小于预设交汇比,并且所处位置越靠近待渲染模型里层的待渲染组件所对应的目标渲染标识越小。在此基础上,模型渲染系统可根据目标渲染标识之间的大小关系,对多个待渲染组件的渲染顺序进行排序,即目标渲染标识越小的待渲染组件所对应的渲染顺序越靠前。
98.由此可见,通过上述过程,实现了自动对多个待渲染组件进行排序的效果,从而避免了采用手工方式处理待渲染模型时存在的工作量大并且容易出错的问题,有利用户节约时间成本,增强渲染过程中的可控性。另外,由于渲染引擎自身的渲染顺序也是基于游戏中的光照信息所确定的,因此,本技术通过根据光照信息所确定的多个待渲染组件的渲染顺序与渲染引擎自身的渲染顺序是相同的,从而解决了现有技术中由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的问题,进而提升了待渲染模型的渲染效果。
99.在一种可选的实施例中,模型渲染系统可通过确定法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的射线交汇区域,从而根据射线交汇区域与叠加后的当前待渲染组件之间的面积比值,确定当前待渲染组件所对应的交汇比。
100.可选的,光照模型所发出的光线是根据法线信息所对应的射线方向照射在叠加后的当前待渲染组件之上的,因此,模型渲染系统在计算当前待渲染组件的交汇比之前,先确定法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的射线交汇区域,其中,射线交汇区域表征了当前待渲染组件上有光线照射的区域。
101.进一步地,模型渲染系统可分别计算当前待渲染组件的面积以及射线交汇区域的面积,进而计算当前待渲染组件的面积以及射线交汇区域的面积之间的面积比值。其中,该面积比值即为当前待渲染组件所对应的交汇比。
102.在一种可选的实施例中,在确定法线信息所对应的射线与当前待渲染组件进行交汇的射线交汇区域之前,模型渲染系统通过确定当前待渲染组件在待渲染模型中的当前位
置,从而基于当前位置确定当前待渲染组件与其他待渲染组件之间的叠加区域,进而从当前待渲染组件所对应的顶点中去除叠加区域所对应的顶点,得到处理后的当前待渲染组件。
103.可选的,相邻的待渲染组件之间会存在叠加区域,以待选模型为头发模型为例,相邻的待渲染组件之间,在头发根部的位置会存在叠加区域。因此,模型渲染系统可根据每个待渲染组件在待渲染模型中的当前位置,确定相邻的其他待渲染组件,从而确定叠加区域。
104.进一步地,在确定叠加区域之后,模型渲染系统从当前待渲染组件所对应的顶点中去除叠加区域所对应的顶点,得到处理后的当前待渲染组件。具体的,叠加区域位于头发根部的位置,因此,模型渲染系统从当前待渲染组件中的所有顶点中减掉头发根部区域所对应的顶点,例如,对头发根部区域,沿uv的v向进行剔除大约20%的顶点。
105.在一种可选的实施例中,模型渲染系统可首先根据多个待渲染组件所对应的目标渲染标识对多个待渲染组件进行排序,得到多个待渲染组件的渲染顺序,然后按照多个待渲染组件的渲染顺序依次对每个待渲染组件上的顶点进行渲染,得到渲染后的待渲染组件,最后对渲染后的待渲染组件进行合并,得到目标模型。
106.可选的,模型渲染系统可根据存储的多个待渲染组件所对应的目标渲染标识对多个待渲染组件进行排序,并按照由内到外的渲染顺序依次对每个待渲染组件的顶点进行渲染,从而得到渲染后的待渲染组件。
107.进一步地,在所有的待渲染组件全部渲染完成之后,按照渲染顺序,依次合并渲染后的待渲染组件,从而最终得到目标模型。
108.需要注意到的是,通过上述过程,待渲染组件之间的渲染顺序符合渲染引擎的渲染逻辑,从而避免了由于头发模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致的在游戏中头发模型存在渲染效果差的问题,实现了提高画面质量的效果。
109.在一种可选的实施例中,图7示出了根据本发明实施例的一种生成模型渲染系统的流程图。如图7所示,为了解决头发模型中的待渲染组件的排序问题,需要确定新的组件规则。具体包括:根据头发分组逻辑(即自然逻辑)从头发模型中抽离出头发组件(即待渲染组件);将头发组件的先后顺序与渲染引擎的渲染顺序对齐;将头发组件的先后顺序与工具的识别顺序对齐;对头发模型进行球形光照计算。其中,对头发模型进行球形光照计算还包括:根据光照方向n属性计算头发组件的光照信息;根据光照的射线计算头发组件的交互比;去除叠加区域。在对头发模型进行球形光照计算时,通过设置预设交互比,可确定头发组件的目标渲染标识。
110.进一步地,如图7所示,在对头发模型进行球形光照计算之后,进入排序环节,具体包括:根据目标渲染标识对头发组件进行排序,并且排序结果符合半透明物体渲染逻辑顺序。在此基础上,可采用houdini sop模块结合vex作为上述过程的实现方式,从而形成了最终的设计思路。最后,基于该设计思路,可通过技术方法手段生成程序化头发排序工具(即模型渲染系统)。
111.需要注意到的是,基于该模型渲染系统,通过版本迭代,可在渲染头发模型时实现自动化一键排序以及一键烘焙,从而降低了渲染工作的工作量并且提升了渲染质量。例如,如图8所示,图8中分别示出了一个头发模型的原始效果、使用该模型渲染系统v1版本的渲染效果、使用该模型渲染系统v2版本的渲染效果以及使用该模型渲染系统v3版本的渲染效
果。通过对比可知,随着版本迭代,头发模型的渲染效果有了极大的提升。另外,图9示出了一种根据本发明实施例的渲染效果,如图9所示,通过本技术中的渲染模型的方法,在不同的光照条件下,都能生成渲染质量很好的渲染效果。
112.由上述内容可知,在本技术中,通过多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序,从而实现了在对待渲染模型进行渲染时,自动对多个待渲染组件进行排序的效果,避免了采用手工方式处理待渲染模型时存在的工作量大并且容易出错的问题,进而节约了时间成本,并且增强了渲染过程中的可控性。另外,由于渲染引擎自身的渲染顺序也是基于游戏中的光照信息所确定的,因此,本技术通过根据光照信息所最终确定的多个待渲染组件在渲染引擎中的渲染顺序与渲染引擎自身的渲染顺序是相同的,从而解决了现有技术中由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的问题,进而提升了待渲染模型的渲染效果,
113.由此可见,通过本技术的技术方案,达到了自动确定多个待渲染组件在渲染引擎中的渲染顺序的目的,从而实现了提高渲染效率的技术效果,进而解决了由于待渲染模型所包含的多个渲染组件的渲染顺序与游戏引擎中的渲染顺序不同导致渲染效果差的技术问题。
114.实施例2
115.根据本发明实施例,还提供了一种渲染模型的装置实施例。其中,图10是根据本发明实施例的渲染模型的装置的示意图,如图10所示,该装置包括:获取模块1001、划分模块1002、确定模块1003以及渲染模块1004。
116.其中,获取模块1001,用于获取待渲染模型;划分模块1002,用于将待渲染模型划分为多个待渲染组件;确定模块1003,用于基于多个待渲染组件所对应的光照信息确定多个待渲染组件在渲染引擎中的渲染顺序;渲染模块1004,用于基于渲染顺序对多个待渲染组件进行渲染,得到目标模型。
117.需要说明的是,上述获取模块1001、划分模块1002、确定模块1003以及渲染模块1004对应于上述实施例中的步骤s302至步骤s308,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
118.可选的,上述划分模块还包括:第一获取模块以及第一划分模块。其中,第一获取模块,用于获取待渲染模型的模型类型;第一划分模块,用于基于模型类型将待渲染模型划分为多个待渲染组件。
119.可选的,上述确定模块还包括:第二获取模块、第一确定模块以及第二确定模块。其中,第二获取模块,用于获取待渲染模型所对应的空间信息以及待渲染模型所对应的光照模型;第一确定模块,用于根据空间信息以及光照模型确定多个待渲染组件所对应的法线信息,其中,光照信息至少包括法线信息;第二确定模块,用于基于法线信息确定多个待渲染组件在渲染引擎中的渲染顺序。
120.可选的,渲染模型的装置还包括:第三确定模块以及筛选模块。其中,第三确定模块,用于基于光照模型确定待渲染模型所包含的多个面片组件的受光比例;筛选模块,用于基于受光比例对待渲染模型所包含的多个面片组件进行筛选处理,得到筛选后的待渲染模型。
121.可选的,上述第三确定模块还包括:第四确定模块、第五确定模块、第六确定模块
以及计算模块。其中,第四确定模块,用于基于光照模型确定多个面片组件中每个面片组件的第一区域以及第二区域,其中,第一区域的亮度值高于第二区域的亮度值;第五确定模块,用于确定第一区域所对应的第一顶点数量以及第二区域对应的第二顶点数量;第六确定模块,用于根据第一顶点数量以及第二顶点数量确定每个面片组件对应的顶点总数;计算模块,用于计算第一顶点数量与顶点总数的比值,得到每个面片组件所对应的受光比例。
122.可选的,上述筛选模块还包括:第一筛选模块以及第七确定模块。其中,第一筛选模块用于根据受光比例从多个面片组件中筛选出至少一个目标面片组件,其中,至少一个目标面片组件的受光比例大于预设受光比例;第七确定模块,用于基于至少一个目标面片组件得到筛选后的待渲染模型。
123.可选的,上述第一确定模块还包括:第八确定模块、第二筛选模块、第一计算模块以及第九确定模块。其中,第八确定模块,用于基于空间信息确定多个待渲染组件中每个待渲染组件所对应的点云数据;第二筛选模块,用于从点云数据中筛选出顶点坐标处于预设范围的目标点云数据;第一计算模块,用于计算光照模型与目标点云数据之间的目标向量;第九确定模块,用于基于目标向量确定每个待渲染组件所对应的法线信息。
124.可选的,上述第二确定模块还包括:第一执行模块、第二执行模块、第三执行模块、第四执行模块、第五执行模块以及第六执行模块。其中,第一执行模块用于执行步骤1,获取当前待渲染组件所对应的渲染标识;第二执行模块用于执行步骤2,根据当前待渲染组件在待渲染模型中的位置从多个待渲染组件中确定叠加组件;第三执行模块用于执行步骤3,基于叠加组件对当前待渲染组件进行叠加处理,得到叠加后的当前待渲染组件;第四执行模块用于执行步骤4,计算叠加后的当前待渲染组件的交汇比,其中,交汇比表征了与法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的交汇比例;第五执行模块用于执行步骤5,在叠加后的当前待渲染组件的交汇比大于或等于预设交汇比时,对渲染标识进行加一处理,得到更新后的渲染标识;第六执行模块用于执行步骤6,基于更新后的渲染标识确定多个待渲染组件在渲染引擎中的渲染顺序;重复执行步骤1至步骤5,直至叠加后的当前待渲染组件的交汇比小于预设交汇比,并在叠加后的当前待渲染组件的交汇比小于预设交汇比时,确定更新后的渲染标识为当前待渲染组件的目标渲染标识。
125.可选的,上述第四执行模块还包括:第十确定模块以及第十一确定模块。其中,第十确定模块,用于确定法线信息所对应的射线与叠加后的当前待渲染组件进行交汇的射线交汇区域;第十一确定模块,用于根据射线交汇区域与叠加后的当前待渲染组件之间的面积比值,确定当前待渲染组件所对应的交汇比。
126.可选的,渲染模型的装置还包括:第十二确定模块、第十三确定模块以及去除模块。其中,第十二确定模块,用于确定当前待渲染组件在待渲染模型中的当前位置;第十三确定模块,用于基于当前位置确定当前待渲染组件与其他待渲染组件之间的叠加区域;去除模块,用于从当前待渲染组件所对应的顶点中去除叠加区域所对应的顶点,得到处理后的当前待渲染组件。
127.可选的,上述渲染模块还包括:排序模块、第一渲染模块以及合并模块。其中,排序模块,用于根据多个待渲染组件所对应的目标渲染标识对多个待渲染组件进行排序,得到多个待渲染组件的渲染顺序;第一渲染模块,用于按照多个待渲染组件的渲染顺序依次对每个待渲染组件上的顶点进行渲染,得到渲染后的待渲染组件;合并模块,用于对渲染后的
待渲染组件进行合并,得到目标模型。
128.实施例3
129.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例1中的渲染模型的方法。
130.实施例4
131.根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述实施例1中的渲染模型的方法。
132.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
133.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
134.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
135.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
136.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
137.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
138.以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献