树叶模型生成方法、装置、存储介质及电子设备与流程

文档序号:33383727发布日期:2023-03-08 07:07阅读:49来源:国知局
树叶模型生成方法、装置、存储介质及电子设备与流程

1.本公开涉及图像处理技术领域,具体涉及一种树叶模型生成方法、树叶模型生成装置、存储介质及电子设备。


背景技术:

2.随着塞尔达、原神等风格化开放世界游戏的流行,如何快速批量制作场景内的风格化树木成为一个需要解决的课题。
3.市面上的风格化树木制作流程多种多样,大多数都是配合项目需求定制的流程。但美术手工制作的工作流程虽然能够极大程度的还原平面设计的形态,但是需要耗费大量的时间和人力;另外,普通的程序化建模思路制作出来的树木只能远看,近看就会出现模型简陋或者树叶模型插片感强烈的问题。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开的目的在于提供一种树叶模型生成方法、树叶模型生成装置、存储介质及电子设备,旨在解决树叶模型插片感强烈的问题,增强树冠的渲染表现。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开实施例的一方面,提供了一种树叶模型生成方法,其特征在于,包括:配置一个树叶模型的简模;其中,所述简模由至少一个具有目标形状的单元模型构成;基于所述单元模型对应最小包围盒的底面中心点对所述单元模型中各顶点的法线进行修正,得到所述树叶模型的第一法线;以及对所述简模进行撒点处理得到点云,并将插片模型赋予至所述点云处以组成所述树叶模型的中模;将所述树叶模型的第一法线传递至所述树叶模型的中模中插片模型的目标顶点处,以得到所述树叶模型的精模。
8.根据本公开实施例的第二方面,提供了一种树叶模型生成装置,包括:配置模块,用于配置一个树叶模型的简模;其中,所述简模由至少一个具有目标形状的单元模型构成;法线修正模块,用于基于所述单元模型对应最小包围盒的底面中心点对所述单元模型中各顶点的法线进行修正,得到所述树叶模型的第一法线;以及撒点模块,用于对所述简模进行撒点处理得到点云,并将插片模型赋予至所述点云处以组成所述树叶模型的中模;模型修正模块,用于将所述树叶模型的第一法线传递至所述树叶模型的中模中插片模型的目标顶点处,以得到所述树叶模型的精模。
9.根据本公开实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中的树叶模型生成方法。
10.根据本公开实施例的第四方面,提供了一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多
个处理器执行时,使得所述一个或多个处理器实现如上述实施例中的树叶模型生成方法。
11.本公开示例性实施例可以具有以下部分或全部有益效果:
12.在本公开的一些实施例所提供的技术方案中,在配置了树叶模型的简模之后,一方面,基于所述单元模型对应最小包围盒的底面中心点对简模中各单元模型的法线进行修正得到树叶模型的第一法线,之后再用树叶模型的第一法线修正插片模型,能够使得树叶模型的植被受光表现可以呈现自上到下由亮到暗的趋势,使得树冠受光趋于真实,避免插片感强烈,进而增强树冠的渲染表现;另一方面,在配置了简模的基础上,自动根据简模撒点和插片以及法线修正最终得到树叶模型的精模,与美术手工制作相比可以节省人工制作成本,提高模型生成效率。
13.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
14.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
15.图1示意性示出本公开示例性实施例中一种树叶模型生成方法的流程示意图;
16.图2示意性示出本公开示例性实施例中一种树叶模型简模的示意图;
17.图3示意性示出本公开示例性实施例中一种单元模型对应最小包围盒的示意图;
18.图4示意性示出本公开示例性实施例中一种单元模型各顶点法线的示意图;
19.图5示意性示出本公开示例性实施例中一种锥形插片的示意图;
20.图6示意性示出本公开示例性实施例中一种十字插片的示意图;
21.图7示意性示出本公开示例性实施例中一种体素模型的示意图;
22.图8示意性示出本公开示例性实施例中一种体素模型撒点结果的示意图;
23.图9示意性示出本公开示例性实施例中一种对点云的随机处理之前的示意图;
24.图10示意性示出本公开示例性实施例中一种对点云的随机处理之后的示意图;
25.图11示意性示出本公开示例性实施例中一种对插片模型调整之后的示意图;
26.图12示意性示出本公开示例性实施例中一种对法线传递之后的示意图;
27.图13示意性示出本公开示例性实施例中一种生成树叶模型精模的流程示意图;
28.图14示意性示出本公开示例性实施例中一种模型的第一光照效果示意图;
29.图15示意性示出本公开示例性实施例中一种模型的第二光照效果示意图;
30.图16示意性示出本公开示例性实施例中一种过渡曲线的示意图;
31.图17示意性示出本公开示例性实施例中一种模型的垂直渐变渲染效果示意图;
32.图18示意性示出本公开示例性实施例中一种计算垂直渐变材质的界面示意图;
33.图19示意性示出本公开示例性实施例中一种模型的第三光照效果示意图;
34.图20示意性示出本公开示例性实施例中一种模型的第四光照效果示意图;
35.图21示意性示出本公开示例性实施例中一种距离场贴图的示意图;
36.图22示意性示出本公开示例性实施例中一种模型的垂直渐变渲染效果示意图;
37.图23示意性示出本公开示例性实施例中一种计算垂直渐变材质的界面示意图;
38.图24示意性示出一种现有技术的树叶模型渲染的效果示意图;
39.图25示意性示出本公开示例性实施例中一种树叶模型渲染的效果示意图;
40.图26示意性示出本公开示例性实施例中一种树叶模型生成装置的组成示意图;
41.图27示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图;
42.图28示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
具体实施方式
43.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
44.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
45.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
46.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
47.随着塞尔达、原神等风格化开放世界游戏的流行,如何快速批量制作场景内的风格化树木成为一个需要解决的课题。市面上的风格化树木制作流程多种多样,大多数都是配合项目需求定制的流程,大体可以分为两种制作思路。
48.一类是为了追求高度定制和风格化的手工模型,树叶的插片或者雕刻完全由美术手工制作。美术手工制作的工作流程虽然能够极大程度的还原平面设计的形态,但是需要耗费大量的时间和人力。
49.另一类是利用程序化建模工具制作符合项目需求的自动建模流程,常见的程序化建模工具包括blender的几何节点,以及houdini的程序化工具。而普通的程序化建模思路制作出来的树木只能远看,近看就会出现模型简陋或者树叶模型插片感强烈的问题,例如叶片的模型面片分布,不够有团簇感,缺少风格化特有的色块体积等。
50.因此,针对现有技术的缺陷,本公开提供了一种树叶模型生成方法,使其不仅可以解决树叶模型插片感强烈的问题,增强树冠色块感的表现,还能自动化生成树木的树冠模型,并最大化保留美术的造型设计。
51.以下对本公开实施例的技术方案的实现细节进行详细阐述。
52.图1示意性示出本公开示例性实施例中一种树叶模型生成方法的流程示意图。如图1所示,该树叶模型生成方法包括步骤s101至步骤s104:
53.步骤s101,配置一个树叶模型的简模;其中,所述简模由至少一个具有目标形状的单元模型构成;
54.步骤s102,基于所述单元模型对应最小包围盒的底面中心点对所述单元模型中各顶点的法线进行修正,得到所述树叶模型的第一法线;以及
55.步骤s103,对所述简模进行撒点处理得到点云,并将插片模型赋予至所述点云处组成所述树叶模型的中模;
56.步骤s104,将所述树叶模型的第一法线传递至所述树叶模型的中模中插片模型的目标顶点处,以得到所述树叶模型的精模。
57.在本公开的一些实施例所提供的技术方案中,在配置了树叶模型的简模之后,一方面,基于所述单元模型对应最小包围盒的底面中心点对简模中各单元模型的法线进行修正得到树叶模型的第一法线,之后再用树叶模型的第一法线修正插片模型,能够使得树叶模型的植被受光表现可以呈现自上到下由亮到暗的趋势,使得树冠受光趋于真实,避免插片感强烈,进而增强树冠的渲染表现;另一方面,在配置了简模的基础上,自动根据简模撒点和插片以及法线修正最终得到树叶模型的精模,与美术手工制作相比可以节省人工制作成本,提高模型生成效率。
58.在介绍之前,先对模型制作过程的概念进行简要介绍。一个模型根据模型精度的不同可以分为简模、中模和精模。简模即精度不高,呈现一个大概的样子,中模则精度比简模要求高一些,比精模要求差一些,而精模则是精度极高的模型。
59.需要说明的是,简模、中模和精模中精度的高低是相对而言的,即就精度而言,精模>中模>简模,在本公开提供的树叶模型生成方法中,首先制作树叶模型的简模,呈现一个树叶模型初步的样子,然后在此基础上,再制作树叶模型的中模,即由插片模型构成,最后再在此基础上制作树叶模型的精模,也就是法线传递之后的结果。在制作树叶模型的过程中,从简模到中模再到精模,精度逐步提高。
60.需要说明的是,本技术提供的树叶模型生成方法可以适用于植被模型的树叶部分,结合已有的树干模型的生成方法可以得到完整的植被模型。也可以适用于其他需要按照光线呈现不同明暗变化的虚拟资源的模型。
61.下面,将结合附图及实施例对本示例实施方式中的树叶模型生成方法的各个步骤进行更详细的说明。
62.在步骤s101中,配置一个树叶模型的简模;其中,所述简模由至少一个具有目标形状的单元模型构成。
63.在本公开的一个实施例中,需要由游戏制作的美术人员在软件中,快速雕刻出树叶模型的树冠的剪影,得到一个简模。例如可以是使用zbrush或者maya等软件。
64.其中,简模是由至少一个具有目标形状的单元模型构成的,呈现一个树叶模型初步的样子。而单元模型是简模的组成单元,具有一定的形状,单元模型中包括了模型表面的各个顶点,参考实际树木的树冠形状,目标形状可以为椭圆状。实际上还可以根据实际需求配置为由不规则多面体等其他预设形状的单元模型构成。
65.图2示意性示出本公开示例性实施例中一种树叶模型简模的示意图。参考图2所示,由一个个椭圆状的模型组成了树冠的剪影,其中椭圆状的模型即为组成简模的单元模型,多个单元模型即组成了如图2所示的树叶模型的简模。
66.再配置树叶模型简模的过程中,还可以对单个单元模型进行打组,并分别按照需要命名,以便后续依次对单元模型进行处理。
67.在步骤s102中,基于所述单元模型对应最小包围盒的底面中心点对所述单元模型中各顶点的法线进行修正,得到所述树叶模型的第一法线。
68.具体地,在风格化树木制作中,通常使用球状法线来处理树冠,使法线垂直于椭圆体的表面顶点,但是这样子做出来的植被受光时会显得很圆,总体来说过于失真。因此,基于对现实场景和绘画作品的观察,由于太阳高度的原因,植被整体应该呈现出一个自上到下,由亮到暗的趋势,所以在本技术中可以依次处理简模中的每一个单元模型的法线,使其最终得到的模型受光趋势贴合实际。
69.在本公开的一个实施例中,步骤s102中修正法线的步骤具体如下:
70.步骤一,针对一所述单元模型,确定所述单元模型对应最小包围盒的底面中心点;
71.步骤二,将所述底面中心点沿纵轴方向向上偏移第一预设距离得到所述底面中心点的偏移坐标;
72.步骤三,根据所述单元模型中各顶点的坐标和所述底面中心点的偏移坐标分别计算各顶点修正后的法线;
73.步骤四,遍历所述简模中所有的所述单元模型,重复上述法线修正过程以得到所述树叶模型的第一法线。
74.下面对上述步骤进行详细说明。
75.在步骤一中,根据单元模型的形状确定一个可以完全包裹住该单元模型的长方体的最小包围盒。
76.图3示意性示出本公开示例性实施例中一种单元模型对应最小包围盒的示意图。以单元模型为椭圆状为例,确定该单元模型的最小包围盒如图3所示。
77.在步骤二中,最小包围盒的底面为一个矩形,找到矩形的中心点c作为底面中心点,并将c沿着纵轴方向,即垂直向上偏移第一预设距离得到c’,c’的坐标记为底面中心点的偏移坐标。第一预设距离可以根据需求具体配置。
78.图4示意性示出本公开示例性实施例中一种单元模型各顶点法线的示意图。参考图4所示,单元模型的模型表面包括多个顶点,每一顶点对应有相应的法线。
79.在步骤三中,单元模型的模型表面包括多个顶点,对每一顶点,根据顶点的坐标以及底面中心点的偏移坐标来进行法线的修正。以单元模型中一个顶点p为例,将顶点的坐标p减去底面中心点的偏移坐标c’得到p顶点修正后的法线朝向。参考图3所示,
80.步骤一到步骤三这一过程可以利用houdini完成,houdini算法如下:
81.vector center=getbbox_center(1);
82.vector min=getbbox_min(1);
83.center.y=min.y+chf(“offset”)*100;
84.v@n=normalize(@p-center);
85.这是对单元模型中一个顶点的法线进行修正,重复上述步骤对一个单元模型中所有顶点的法线完成修正。
86.在步骤四中,依次遍历简模中的各个单元模型,重复上述的确定最小包围盒以及顶点的法线修正,最终得到修正后新的法线方向,记为第一法线。
87.在步骤s103中,对所述简模进行撒点处理得到点云,并将插片模型赋予至所述点云处组成所述树叶模型的中模。
88.具体来说,自动化生成树冠进而得到树叶模型的中模一般是通过撒点和插片两个步骤。首先对简模进行撒点处理,生成一堆标记单个插片模型位置的点云,然后将插片模型放置在这些点云的坐标上,进而得到由多个插片模型组合成的树冠。
89.其中,还需要利用插片方式制作插片模型。常见的插片模型例如锥形插片、十字插片等形式。图5示意性示出本公开示例性实施例中一种锥形插片的示意图,如图5所示,每个插片模型呈一个锥形形状。图6示意性示出本公开示例性实施例中一种十字插片的示意图,如图6所示,每个插片模型为三个平面交叉组成,侧面呈现为“十”字形状。
90.在本公开的一个实施例中,步骤s103中,对所述简模进行撒点处理得到点云,包括:按照预设的体素尺寸将所述简模转换为体素模型;对所述体素模型进行撒点处理得到点云。
91.由于普通的程序化植被生成一般都是在球体的表面上进行撒点,这样做的好处是可以节约点数,因为撒的点越多模型的面数越高,会影响游戏实装的性能。但这样做的缺点也很明显,由于只有简模的表面顶点上有插片模型会导致在实际渲染中有些部分镂空或者插片感明显。
92.因此,为解决上述技术缺陷,本技术提供的树叶模型生成方法中可以将简模进行体素化处理,在转换为体素模型后,再进行撒点处理。
93.图7示意性示出本公开示例性实施例中一种体素模型的示意图。具体来说,预先设置适当的体素尺寸,即体素大小,按照体素尺寸将简模转换为存储了带方向和距离的vdb格式的体素模型,如图7所示。其中,vdb即高效存储volume数据的通用型全新数据架构,存储模型表面附近的有符号和距离的体积。
94.图8示意性示出本公开示例性实施例中一种体素模型撒点结果的示意图。在经体素化后的体素模型上进行撒点处理,得到如图8所示点云,点云中包括多个点。
95.在本公开的一个实施例中,在所述对所述简模进行撒点处理得到点云之后,所述方法还包括:对所述点云中各点处可承载插片模型的尺寸参数进行第一随机处理;和/或对所述点云中各点处的法线进行第二随机处理,以更新所述点云。
96.具体而言,为了保证插片模型按照不同的方向放置在点云上,可以对点云对应的参数进行随机调整。
97.随机处理可以从两个方面入手,一个是对点云中各点处可承载插片模型的尺寸参数进行随机,另一个是对点云中各点处的法线进行随机。可以在一个预设区间内取随机数,再将随机数进行分配,进而实现对点云的参数进行修改。
98.其中,点云中各点处可以后续放置插片模型,插片模型具有不同的尺寸,不同点处可承载的插片模型的尺寸参数影响着放置在该点处插片模型的尺寸大小。而不同点处的法线影响着放置在该点处插片模型的方向。
99.当然,为了增加树叶模型生成的随机性,可以将这两种随机调整方式按需使用,可以使用其中一种,或两种相结合,本公开在此不做具体限定。
100.图9示意性示出本公开示例性实施例中一种对点云的随机处理之前的示意图,图10示意性示出本公开示例性实施例中一种对点云的随机处理之后的示意图,其中采用了第
一随机处理和第二随机处理相结合的方式。对比图9和图10,可以明显看出图10中插片模型放置更为随机,进而提高最终树叶模型的真实性。
101.在本公开的一个实施例中,在将插片模型赋予至所述点云处以组成所述树叶模型的中模之后,所述方法还包括:将所述中模中各插片模型分别沿纵轴方向分别平移第二预设距离,得到各插片模型的第一位置;在各插片模型的第一位置处对所述插片模型的旋转方向分别进行修正,以更新所述树叶模型的中模。
102.具体来说,当采用十字插片方式生成的插片模型时,为了避免基于点云赋予插片模型之后存在如图10中1001中的情况,即将插片模型“十”字面垂直展现在外部,这样的排布方式会导致在实际渲染中,该部位面片感严重,失去模型的整体团簇感。
103.因此,为了解决上述缺陷,首先对各插片模型沿纵轴方向做一次偏移,然后接着对各插片模型的旋转方向进行修正。
104.处理的过程可以利用houdini完成,houdini算法如下:
105.对各插片模型沿纵轴方向做一次偏移:
106.v@tangent=cross(@n,(1,0,1));
107.@n.y*=0.5;
108.对各插片模型的旋转方向进行修正:
109.vector y=normalize(@n);
110.vector x=cross(v@tangent,y);
111.vector z=cross(x,y);
112.float r=fit(rand(@ptnum*23985),0,1,-1,1);
113.matrix3 m=set(x,y,z);
114.rotate(m,radians((chf("rotate_x")*r)),x);
115.rotate(m,radians((chf("rotate_y")*r)),y);
116.rotate(m,radians((chf("rotate_z")*r)),z);
117.@orient=quaternion(m);
118.进而得到新的插片模型的位置,这时组成的树叶模型中模中插片方向几乎不会存在垂直于简模表面的情况,进而降低了树叶模型渲染时面片感,具有更好的渲染表现。
119.图11示意性示出本公开示例性实施例中一种对插片模型调整之后的示意图。对比图10和图11,可以看出更新后的插片方向垂直于简模表面的情况消失了,插片柔和了很多。
120.步骤s104,将所述树叶模型的第一法线传递至所述树叶模型的中模中插片模型的目标顶点处,以得到所述树叶模型的精模。
121.在本公开的一个实施例中,将基于植被受光趋势调整之后的第一法线传递至各插片模型,也就是将插片模型的法线修改为第一法线传,进而用于后续的模型渲染,使其能够渲染得到由上至下由亮到暗的趋势。
122.步骤s104中发现传递的具体过程如下:针对所述树叶模型的单元模型中一顶点处的第一法线,根据第一法线所在的直线,确定与所述直线相交的插片模型的顶点作为待传递的目标顶点;将所述目标顶点的法线替换为所述第一法线;遍历所述树叶模型的所有单元模型中的所有顶点,以完成法线传递过程。
123.具体地,树叶模型的简模包括了单元模型中的多个顶点,而树叶模型的中模包括
了插片模型的顶点。针对单元模型中每一个顶点的第一法线,以该顶点第一法线所在的直线为基准,找到与该直线相交的插片模型的顶点,然后将插片模型的顶点处的法线修改为单元模型中顶点的第一法线,最后遍历树叶模型所有单元模型中的所有顶点,按照同样的步骤进行法线传递。
124.通过法线传递后的树叶模型的精模中,将s102中修正后法线进行了存储,这样一来,树叶模型便可以存储植被受光趋势,后续对这样的精模进行渲染就可以保留植被受光趋势,贴合实际的树木光照效果。
125.图12示意性示出本公开示例性实施例中一种对法线传递之后的示意图,参考图12所示,树叶模型中各插片模型的法线与步骤s102中修正的第一法线具有一致性。
126.基于上述方法,只需要认为配置一个树冠剪影的简模,而后使用合适的工具便可自动对简模进行处理而自动生成树叶模型的精模,相较于美术手工制作的工作流程,能够大量节省人力时间和成本,提高树叶模型生成效率。
127.图13示意性示出本公开示例性实施例中一种生成树叶模型精模的流程示意图。如图13所示,具体过程如下:
128.步骤s1301,导入美术制作的简模;
129.步骤s1302,处理简模的法线方向,即对法线进行修正;
130.步骤s1303,将简模转换为vdb;
131.步骤s1304,根据vdb的距离进行撒点得到点云;
132.步骤s1305,随机点云的方向和大小;
133.步骤s1306,制作单个十字插片模型;
134.步骤s1307,将插片模型赋给点云数据;
135.步骤s1308,将处理后的简模大仙传递给插片模型,最终得到高精度的树叶模型。
136.在本公开的一个实施例中,在得到所述树叶模型的精模之后,所述方法还包括:计算风格化材质;其中,所述风格化材质包括垂直渐变材质和/或边沿光材质;基于所述风格化材质对所述树叶模型的精模进行模型渲染。
137.具体地,根据步骤s101至步骤s104能够自动生成树叶模型的精模,可以利用houdini计算,并将生成的树叶模型的精模的信息存储在fbx文件中,之后导出到ue,并在ue中读取,以及对精模贴上风格化材质进行渲染,即可得到最终渲染后的树叶模型。
138.根据树叶模型中的顶点(即精模中插片模型的顶点)的法线以及ao(ambient occlusion,环境光遮蔽)信息对树叶模型中的插片模型做风格化处理,使其sss(subsurface scattering,次表面散射效果)和光照效果呈现出团簇形态,弱化单个叶片的表现,减少插片感。
139.其中,风格化材质可以包括垂直渐变材质。即基于该垂直渐变材质可以使得最终渲染出的树叶模型呈现一个从上到下垂直渐变的渲染效果。
140.在本公开的一个实施例中,计算所述垂直渐变材质,包括:将所述精模中各插片模型的顶点处的法线点乘向上向量得到第一受光方向向量;对所述第一受光方向向量进行偏移得到渐变结果,并将所述渐变结果映射到过渡曲线;根据所述过渡曲线得到所述垂直渐变材质。
141.为了便于介绍计算过程,采用一个规则形状的球体来介绍计算原理,实际应用时
将该球体替换为相应的树叶模型即可实现同样的技术效果。
142.首先,将模型中各顶点(对应于精模中各插片模型的顶点)处的法线点乘向上向量得到向上的第一受光方向向量。其中,向上向量可以是(0,0,1),或者是(0,0,n)。图14示意性示出本公开示例性实施例中一种模型的第一光照效果示意图,如图14所示,该模型的上方和下方具有明显的阴暗表现。
143.然后,对第一受光方向向量进行偏移得到渐变结果,偏移时可以将第一受光方向向量乘以一个预设值后在添加一个偏移量,进而得到加柔和的上下过渡的效果。举例而言,可以将第一受光方向向量乘0.5,再加上一个(0~1)之间的偏移值,如0.2。图15示意性示出本公开示例性实施例中一种模型的第二光照效果示意图,如图15所示,该模型的自上而下具有一个渐变效果。
144.之后,以该渐变结果作为数值参考,重新映射到自定义的过渡曲线上。图16示意性示出本公开示例性实施例中一种过渡曲线的示意图,如图16所示,该过渡曲线具有不同的明暗程度,整体呈现一个渐变的效果。
145.最后根据过渡曲线得到新的上下渐变,具有三分阴影效果,将其转换为垂直渐变材质。图17示意性示出本公开示例性实施例中一种模型的垂直渐变渲染效果示意图,将垂直渐变材质赋予至模型即可得到如图17所示的渲染效果,该模型呈现自上向下具有垂直渐变的现象。
146.图18示意性示出本公开示例性实施例中一种计算垂直渐变材质的界面示意图。其中,采用ue5进行材质计算,vertexnormalws为世界空间顶点法线点乘垂直向上的向量,可以得到按模型顶点垂直向上的受光值(取值区间-1~1),再对该值(除以2加1)重映射到0.5~1.5这个区间,使得受光值比正常pbr的(0~1)高出0.5的范围,令材质最终显示更亮且呈现上下过渡的趋势。
147.在本公开的一个实施例中,计算所述边沿光材质,包括:将所述精模中各插片模型的顶点处的法线点乘光源方向向量得到第二受光方向向量;基于所述第二受光方向向量采用菲涅尔效果公式计算边沿光值;将所述边沿光值与所述树叶模型的距离场贴图相乘得到所述边沿光材质。
148.具体而言,在固有色渲染的基础上,添加了边沿光的计算。边沿光为了适应场景内两个直射光的设置,对朝上的光源进行了一次判断,永远只采集朝上的光源带来的影响。
149.其中,双平行光检测是指ue中出现多个平行光源时,每个平行光会按照index从0开始计数。在动态光场景中,通常有两个平行光模拟太阳和月亮在空中交替出现。为了判断当前场景内高于海平面的光源是哪一个,可以将其中一个光源点乘向上的法向量得到一个0~1的值。当前光源高于海平面时,则值近似于1,低于海平面则近似0,再对这两个光源的方向以该数值为阈值进行插值,就可以得到当前场景高于海平面的光源的方向。
150.同计算垂直渐变材质类似,采用一个规则形状的球体来介绍计算原理,实际应用时将该球体替换为相应的树叶模型即可实现同样的技术效果。
151.首先,首先,将模型中各顶点(对应于精模中各插片模型的顶点)处的法线点乘光源方向向量得到第二受光方向向量。图19示意性示出本公开示例性实施例中一种模型的第三光照效果示意图,如图19所示,展示了该模型的受光面。
152.然后,在此基础上,基于所述第二受光方向向量,采用菲涅尔效果公式计算受光面
的边沿光值。其中,菲涅尔效果(fresnel)的公式:fresnelvalue=pow(1-max(0,dot(n,v)),_fresnelpow),n为模型顶点法线,v为视角方向,fresnelpow为菲涅尔效果的强度。图20示意性示出本公开示例性实施例中一种模型的第四光照效果示意图,如图20所示,展示了该模型受光面的边沿光效果。
153.之后,将边沿光值和sdf(signed distance filed,距离场)贴图相乘便得到边沿光材质。其中,sdf贴图可以控制树木叶片渲染的透明度,可以使用photoshop做边缘沿中心模糊的变换得到。图21示意性示出本公开示例性实施例中一种距离场贴图的示意图,如图21所示,示出了材质贴图的alpha通道图。图22示意性示出本公开示例性实施例中一种模型的垂直渐变渲染效果示意图,如图22所示,展示了该模型叶片边沿的垂直渐变效果。
154.图23示意性示出本公开示例性实施例中一种计算垂直渐变材质的界面示意图。采用ue5进行计算,采样屏幕空间位置screenposition并取r值,乘以偏移值可以得到一个按屏幕空间从左到右由深到浅的渐变值,以该值乘以sdf贴图可以给贴图附加一个深浅渐变,以该结果为阈值对该值自身和1进行插值计算,可以得到只有边沿值的材质效果。
155.需要说明的是,上述的两种材质渲染可以择一使用,也可以结合使用。
156.基于上述方法,先大致雕刻出树冠的剪影,工具再将根据剪影的简模自动生成合理的树冠,然后计算的材质将根据模型提供的法线以及ao信息对树叶的插片模型做风格化处理来进行树叶渲染。这样一来,一方面利用插片方式还原团簇效果生成的模型总面数一般在三万面左右,与纯模型手雕到类似效果的资产十几万面甚至上百万面相比有显著优化;另一方面,传统人工制作一颗树木需要三天左右的时间,而用简模+自动生成的方案可以将人工制作时间缩短至半天,实际上工具运行时间基本可以忽略不计;再一方面,相较于普通的风格化植被,经过法线修正以及撒点优化的本方案模型显得更加自然。
157.图24示意性示出一种现有技术的树叶模型渲染的效果示意图;图25示意性示出本公开示例性实施例中一种树叶模型渲染的效果示意图,即经过第一法线修正、简模体素化处理、点云随机处理、插片模型偏移和旋转以及使用垂直渐变材质和边沿光材质的树叶模型渲染效果。对比图24、25的渲染结果,可以明显看出本技术中的树叶模型渲染结果中,插片感减弱,色块感表现良好,能够提高用户体验。
158.图26示意性示出本公开示例性实施例中一种树叶模型生成装置的组成示意图,如图26所示,该树叶模型生成装置2600可以包括配置模块2601、法线修正模块2602、撒点模块2603以及模型修正模块2604。其中:
159.配置模块2601,用于配置一个树叶模型的简模;其中,所述简模由至少一个具有目标形状的单元模型构成;
160.法线修正模块2602,用于基于所述单元模型对应最小包围盒的底面中心点对所述单元模型中各顶点的法线进行修正,得到所述树叶模型的第一法线;以及
161.撒点模块2603,用于对所述简模进行撒点处理得到点云,并将插片模型赋予至所述点云处以组成所述树叶模型的中模;
162.模型修正模块2604,用于将所述树叶模型的第一法线传递至所述树叶模型的中模中插片模型的目标顶点处,以得到所述树叶模型的精模。
163.根据本公开的示例性实施例,所述法线修正模块2602还用于针对一所述单元模型,确定所述单元模型对应最小包围盒的底面中心点;将所述底面中心点沿纵轴方向向上
偏移第一预设距离得到所述底面中心点的偏移坐标;根据所述单元模型中各顶点的坐标和所述底面中心点的偏移坐标分别计算各顶点修正后的法线;遍历所述简模中所有的所述单元模型,重复上述法线修正过程以得到所述树叶模型的第一法线。
164.根据本公开的示例性实施例,所述撒点模块2603还用于按照预设的体素尺寸将所述简模转换为体素模型;对所述体素模型进行撒点处理得到点云。
165.根据本公开的示例性实施例,所述撒点模块2603还用于对所述点云中各点处可承载插片模型的尺寸参数进行第一随机处理;和/或对所述点云中各点处的法线进行第二随机处理,以更新所述点云。
166.根据本公开的示例性实施例,所述撒点模块2603还用于将所述中模中各插片模型分别沿纵轴方向分别平移第二预设距离,得到各插片模型的第一位置;在各插片模型的第一位置处对所述插片模型的旋转方向分别进行修正,以更新所述树叶模型的中模。
167.根据本公开的示例性实施例,所述模型修正模块2604还用于针对所述树叶模型的单元模型中一顶点处的第一法线,根据第一法线所在的直线,确定与所述直线相交的插片模型的顶点作为待传递的目标顶点;将所述目标顶点的法线替换为所述第一法线;遍历所述树叶模型的所有单元模型中的所有顶点,以完成法线传递过程。
168.根据本公开的示例性实施例,所述树叶模型生成装置2600还包括渲染模块,所述渲染模块用于计算风格化材质;其中,所述风格化材质包括垂直渐变材质和/或边沿光材质;基于所述风格化材质对所述树叶模型的精模进行模型渲染。
169.根据本公开的示例性实施例,所述渲染模块还用于将所述精模中各插片模型的顶点处的法线点乘向上向量得到第一受光方向向量;对所述第一受光方向向量进行偏移得到渐变结果,并将所述渐变结果映射到过渡曲线;根据所述过渡曲线得到所述垂直渐变材质。
170.根据本公开的示例性实施例,所述渲染模块还用于将所述精模中各插片模型的顶点处的法线点乘光源方向向量得到第二受光方向向量;基于所述第二受光方向向量采用菲涅尔效果公式计算边沿光值;将所述边沿光值与所述树叶模型的距离场贴图相乘得到所述边沿光材质。
171.上述的树叶模型生成装置2600中各模块的具体细节已经在对应的树叶模型生成方法中进行了详细的描述,因此此处不再赘述。
172.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
173.在本公开的示例性实施例中,还提供了一种能够实现上述方法的存储介质。图27示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图,如图27所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品2700,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如手机上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
174.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。图28示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
175.需要说明的是,图28示出的电子设备的计算机系统2800仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
176.如图28所示,计算机系统2800包括中央处理单元(central processing unit,cpu)2801,其可以根据存储在只读存储器(read-only memory,rom)2802中的程序或者从存储部分2808加载到随机访问存储器(random access memory,ram)2803中的程序而执行各种适当的动作和处理。在ram 2803中,还存储有系统操作所需的各种程序和数据。cpu 2801、rom 2802以及ram 2803通过总线2804彼此相连。输入/输出(input/output,i/o)接口2805也连接至总线2804。
177.以下部件连接至i/o接口2805:包括键盘、鼠标等的输入部分2806;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分2807;包括硬盘等的存储部分2808;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分2809。通信部分2809经由诸如因特网的网络执行通信处理。驱动器2810也根据需要连接至i/o接口2805。可拆卸介质2811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2810上,以便于从其上读出的计算机程序根据需要被安装入存储部分2808。
178.特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分2809从网络上被下载和安装,和/或从可拆卸介质2811被安装。在该计算机程序被中央处理单元(cpu)2801执行时,执行本公开的系统中限定的各种功能。
179.需要说明的是,本公开实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
180.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个
用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
181.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
182.作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
183.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
184.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
185.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
186.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1