基于分层噪声的风格化山脉生成方法、系统、介质和设备与流程

文档序号:31873011发布日期:2022-10-21 20:09阅读:28来源:国知局
1.本发明涉及3d建模
技术领域
:,尤其涉及一种基于分层噪声的风格化山脉生成方法、系统、介质和设备。
背景技术
::2.目前,一般的程序化地形的生成方法都只能生成逐渐凸起的山脉,但是有些地形比如丹霞和张家界等地区的地形中有上宽下窄甚至镂空的山峰,传统的依靠单层或者多层的噪声程序化生成出来的山峰模型无法满足这种情况。3.为解决现有技术中存在的问题,亟需研发一种基于分层噪声的风格化山脉生成方法,同时,又可以充分地解决具有特殊地形特点的镂空或有悬浮物的风格化地形地貌的问题。技术实现要素:4.本发明所要解决的技术问题是针对现有技术的不足,提供一种基于分层噪声的风格化山脉生成方法、系统、介质和设备。5.本发明解决上述技术问题的技术方案如下:一种基于分层噪声的风格化山脉生成方法,该方法包括:6.数据准备步骤:预先生成或导入分层噪声图模拟不规则地貌;7.整体山脉生成步骤:在分层噪声图中使用行进立方体算法将所有立方体内均匀分布的采样点对应分层噪声图中的颜色进行记录,并将采样点的最终权重值与预设噪声权重阈值进行比较判断后,匹配是否显示规则,绘制出镂空或悬浮的整体的山脉生成区域;8.着色渲染步骤:对整体的山脉生成区域按照海拔高度进行颜色自定义填充及渲染,生成基于分层噪声的风格化山脉。9.优选的,上述数据准备步骤进一步包括:10.构建模型步骤:构建单位模型生成区域及由单位模型生成区域组成的整体山脉生成区域,基于预设置的整体山脉生成区域的尺寸创建单位模型生成区域,根据单位模型生成区域的中心点获取采样点位置;11.分层噪声图生成步骤:输入噪声生成参数结合单位模型的参数逐层循环执行,生成分层噪声图,并根据分层噪声图的多层噪声及噪声图权重调节值生成每个采样点的最终权重值。12.优选的,上述整体山脉生成步骤进一步包括:13.是否显示判断步骤:根据是否显示规则,对所有采样点的最终权重值与预设噪声权重阈值的比较结果进行判断,是否显示规则为采样点的最终权重值小于权重阈值的部分显示为空洞,且设置是否显示值为零;采样点的最终权重值大于权重阈值部分显示为实体,且设置是否显示值为一;14.各体素面片生成步骤:采用行进立方体算法构建整体山脉生成区域,记录每个立方体中各个采样点的是否显示值,生成显示值数组,对显示值数组进行数值转换后,在预存的三角面测量表中索引取得对应的三角面的顶点信息,并根据顶点信息生成各个体素内的面片;15.整体面片生成步骤:基于各个体素内的面片绘制生成整个单位模型生成区域的面片,并根据单位模型生成区域的面片绘制生成整体山脉生成区域。16.优选的,上述着色渲染步骤进一步包括:17.颜色输入准备步骤:读取整体山脉生成区域的高度,并生成多个颜色输入的入口,根据所占海拔区间进行每个颜色的调整;18.颜色输入步骤:将输入不同海拔区间的颜色进行梯度计算,得到整体山脉生成区域的所有位置的颜色,并保存到2d纹理数据中;19.渲染步骤:根据整体山脉生成区域的高度及2d纹理数据,采用平滑函数将颜色按照高度完成渲染。20.本发明还提供一种基于分层噪声的风格化山脉生成系统,采用如上基于分层噪声的风格化山脉生成方法,系统包括:21.数据准备模块:预先生成或导入分层噪声图模拟不规则地貌;22.整体山脉生成模块:在分层噪声图中使用行进立方体算法将所有立方体内均匀分布的采样点对应分层噪声图中的颜色进行记录,并将采样点的最终权重值与预设噪声权重阈值进行比较判断后,匹配是否显示规则,绘制出镂空或悬浮的整体的山脉生成区域;23.着色渲染模块:对整体的山脉生成区域按照海拔高度进行颜色自定义填充及渲染,生成基于分层噪声的风格化山脉。24.优选的,上述数据准备模块进一步包括:25.构建模型模块:构建单位模型生成区域及由单位模型生成区域组成的整体山脉生成区域,基于预设置的整体山脉生成区域的尺寸创建单位模型生成区域,根据单位模型生成区域的中心点获取采样点位置;26.分层噪声图生成模块:输入噪声生成参数结合单位模型的参数逐层循环执行,生成分层噪声图,并根据分层噪声图的多层噪声及噪声图权重调节值生成每个采样点的最终权重值。27.优选的,上述整体山脉生成模块进一步包括:28.是否显示判断模块:根据是否显示规则,对所有采样点的最终权重值与预设噪声权重阈值的比较结果进行判断,是否显示规则为采样点的最终权重值小于权重阈值的部分显示为空洞,且设置是否显示值为零;采样点的最终权重值大于权重阈值部分显示为实体,且设置是否显示值为一;29.各体素面片生成模块:采用行进立方体算法构建整体山脉生成区域,记录每个立方体中各个采样点的是否显示值,生成显示值数组,对显示值数组进行数值转换后,在预存的三角面测量表中索引取得对应的三角面的顶点信息,并根据顶点信息生成各个体素内的面片;30.整体面片生成模块:基于各个体素内的面片绘制生成整个单位模型生成区域的面片,并根据单位模型生成区域的面片绘制生成整体山脉生成区域。31.优选的,上述着色渲染模块进一步包括:32.颜色输入准备模块:读取整体山脉生成区域的高度,并生成多个颜色输入的入口,根据所占海拔区间进行每个颜色的调整;33.颜色输入模块:将输入不同海拔区间的颜色进行梯度计算,得到整体山脉生成区域的所有位置的颜色,并保存到2d纹理数据中;34.渲染模块:根据整体山脉生成区域的高度及2d纹理数据,采用平滑函数将颜色按照高度完成渲染。35.本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的基于分层噪声的风格化山脉生成方法的步骤。36.本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上所述的基于分层噪声的风格化山脉生成方法的步骤。37.本方法发明的有益效果是:38.1)本发明提出的方法可以实现镂空甚至有悬浮物的风格化地形地貌,而现方案只能实现普通的丘陵以及山脉;39.2)本发明方法针对噪声图没有任何要求,甚至可以生成随机的噪声图,并对各高度渲染颜色进行自定义,现有方案可自定义内容较少。40.本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。附图说明41.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。42.图1为本发明基于分层噪声的风格化山脉生成方法示意图;43.图2为本发明具体实施例基于分层噪声的风格化山脉生成示意图;44.图3为本发明具体实施例分层噪声图示意图;45.图4为本发明具体实施例最终渲染效果示意图;46.图5为本发明基于分层噪声的风格化山脉生成系统示意图。具体实施方式47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。48.本发明旨在提出一种基于分层噪声的风格化山脉生成方法,预先生成多层的噪声图或者导入多层噪声图来模拟不规则的风格化山脉的地貌,然后使用行进立方体算法将所有立方体内均匀分布的采样点对应噪声图中的颜色进行记录,按照采样点权重超过阈值显示反之不显示的规则,生成立方体内的模型,采样点权重没有超过阈值的部分显示为空洞,超过阈值部分显示为实体。49.本发明解决上述技术问题的技术方案如下:一种基于分层噪声的风格化山脉生成方法,如图1所示,该方法包括:50.数据准备步骤s10:预先生成或导入分层噪声图模拟不规则地貌;51.整体山脉生成步骤s20:在分层噪声图中使用行进立方体算法将所有立方体内均匀分布的采样点对应分层噪声图中的颜色进行记录,并将采样点的最终权重值与预设噪声权重阈值进行比较判断后,匹配是否显示规则,绘制出镂空或悬浮的整体的山脉生成区域;52.着色渲染步骤s30:对整体的山脉生成区域按照海拔高度进行颜色自定义填充及渲染,生成基于分层噪声的风格化山脉。53.优选的,上述数据准备步骤s10进一步包括:54.构建模型步骤:构建单位模型生成区域及由单位模型生成区域组成的整体山脉生成区域,基于预设置的整体山脉生成区域的尺寸创建单位模型生成区域,根据单位模型生成区域的中心点获取采样点位置;55.分层噪声图生成步骤:输入噪声生成参数结合单位模型的参数逐层循环执行,生成分层噪声图,并根据分层噪声图的多层噪声及噪声图权重调节值生成每个采样点的最终权重值。56.优选的,上述整体山脉生成步骤s20进一步包括:57.是否显示判断步骤:根据是否显示规则,对所有采样点的最终权重值与预设噪声权重阈值的比较结果进行判断,是否显示规则为采样点的最终权重值小于权重阈值的部分显示为空洞,且设置是否显示值为零;采样点的最终权重值大于权重阈值部分显示为实体,且设置是否显示值为一;58.各体素面片生成步骤:采用行进立方体算法构建整体山脉生成区域,记录每个立方体中各个采样点的是否显示值,生成显示值数组,对显示值数组进行数值转换后,在预存的三角面测量表中索引取得对应的三角面的顶点信息,并根据顶点信息生成各个体素内的面片;59.整体面片生成步骤:基于各个体素内的面片绘制生成整个单位模型生成区域的面片,并根据单位模型生成区域的面片绘制生成整体山脉生成区域。60.优选的,上述着色渲染步骤s30进一步包括:61.颜色输入准备步骤:读取整体山脉生成区域的高度,并生成多个颜色输入的入口,根据所占海拔区间进行每个颜色的调整;62.颜色输入步骤:将输入不同海拔区间的颜色进行梯度计算,得到整体山脉生成区域的所有位置的颜色,并保存到2d纹理数据中;63.渲染步骤:根据整体山脉生成区域的高度及2d纹理数据,采用平滑函数将颜色按照高度完成渲染。64.以下结合附图对本发明具体实施例进行详细说明:65.本发明具体实施例中采用通用3d开发平台unityengine为实现平台,部分内容会涉及到unityengine的技术细节。但本发明并不限于此,本发明还可以采用其他的3d开发平台实现。66.如图2所示,本发明提供的具体实现方法如下:67.1、构建单位模型生成区域(chunk)以及由chunk组成的整体的山脉生成区域(chunkhold);68.1.1、根据用户设置的总体模型生成chunkhold的长宽高,一个chunk的长宽高为unity中的单位1(chunkhold长宽高为2*2*1就能生成4个chunk)创建chunk;69.1.2、用户输入的chunk的大小(sizechunk);xyz轴向上的体素个数numbercubes(cube:2d为像素,3d为体素,可理解为一个单位立方体)代入公式求得采样点(point)间距供之后根据chunk中心点计算出采样点位置spcingcube:70.spcingcube=sizechunk/(numbercube-1);71.2、生成随机的噪声图或者传入相应数量的噪声图来得到分层噪声图;72.2.1、噪声生成需要的参数:种子数(seed,使得项目试验数据可控),噪声的层数(numoctaves),噪声的规模(scale),噪声的大小(weight),噪声图权重调节(weightmultiplier);73.2.2、将chunk的中心点(centrechunk)、计算着色器线程组的索引(sv_dispatchthreadid)和chunk的大小(sizechunk)代入公式求出采样点的位置(pospoint):74.pospoint=centrechunk+id*spacingcube-sizechunk/2;75.2.3、将scalenoise,pospoint代入公式求出一层的噪声,其中snoise是noiseshader中的噪声函数(noiseshader是一个unity引擎的package(资源集合包),提供用着色器语言编写的2d/3d渐变噪声函数):76.noiseout=(1-|snoise(pospoint*(scalenoise/100))|)2;77.2.4、循环执行2.3的步骤,在每次的到的noise上进行累加一个每次循环变化的变量得到多层的噪声(finalnoise),再将finalnoise乘以weightmultiplier导到每一个采样点的最终权重值(finalweight),如图3所示;78.3、根据所有采样点的finalweight、设置的整体的噪声权重阈值(noiseweight)、三角面测量表(table,保存所有256种不同的体素内的三角面生成所需的顶点数组)和行进立方体算法来构建整个chunkhold;79.3.1、规定finalweight《noiseweight的时候此point代表是否显示的值(isshow)为0(反之则为1)。80.3.2、记录一个cube中8个point的isshow并转换为一个二进制数(例如cube顶点1到顶点8对应的point的isshow值为00101011),并将此值转化为一个十进制的数(00101011为10进制的43)当成索引取得table中对应的三角面的顶点信息,并将顶点信息输入要生成的mesh(若干个三角组成的面片)中进行mesh的生成;81.3.3、随着每一个体素内面片被生成,一整个chunk区域的mesh就被绘制出来,进而所有chunkhold被绘制出来;82.4、将颜色按照海拔高度进行填充;83.4.1、读取当前chunkhold的高度并生成多个输入的入口供使用者进行颜色的输入,并可以使使用者进行每个颜色所占海拔区间的调整(例如:0-10米是黄色,10到100米是绿色,100-150是白色可变为0-50米是绿色,50到60米是黄色,60-150是白色);84.4.2、将输入的不同区间的颜色,使用unity中的梯度计算函数(gradient.evaluate)计算出chunkhold范围内所有位置的颜色,并保存到2d纹理中;85.4.3、将chunkhold的高和2d纹理数据作为参数传入每一个chunk上的材质球;86.4.4、使用unity里的着色器(shaderlab)的平滑函数(smoothstep)将颜色按照高度进行渲染;87.outcolor=tex(gradientcolor,float2(smoothstep(-chunkholdy/2,chunkholdy/2,worldpos.y),0.5))88.5、最终渲染效果,如图4所示。89.本发明还提供一种基于分层噪声的风格化山脉生成系统,采用如上基于分层噪声的风格化山脉生成方法,如图5所示,系统包括:90.数据准备模块10:预先生成或导入分层噪声图模拟不规则地貌;91.整体山脉生成模块20:在分层噪声图中使用行进立方体算法将所有立方体内均匀分布的采样点对应分层噪声图中的颜色进行记录,并将采样点的最终权重值与预设噪声权重阈值进行比较判断后,匹配是否显示规则,绘制出镂空或悬浮的整体的山脉生成区域;92.着色渲染模块30:对整体的山脉生成区域按照海拔高度进行颜色自定义填充及渲染,生成基于分层噪声的风格化山脉。93.优选的,上述数据准备模块10进一步包括:94.构建模型模块:构建单位模型生成区域及由单位模型生成区域组成的整体山脉生成区域,基于预设置的整体山脉生成区域的尺寸创建单位模型生成区域,根据单位模型生成区域的中心点获取采样点位置;95.分层噪声图生成模块:输入噪声生成参数结合单位模型的参数逐层循环执行,生成分层噪声图,并根据分层噪声图的多层噪声及噪声图权重调节值生成每个采样点的最终权重值。96.优选的,上述整体山脉生成模块20进一步包括:97.是否显示判断模块:根据是否显示规则,对所有采样点的最终权重值与预设噪声权重阈值的比较结果进行判断,是否显示规则为采样点的最终权重值小于权重阈值的部分显示为空洞,且设置是否显示值为零;采样点的最终权重值大于权重阈值部分显示为实体,且设置是否显示值为一;98.各体素面片生成模块:采用行进立方体算法构建整体山脉生成区域,记录每个立方体中各个采样点的是否显示值,生成显示值数组,对显示值数组进行数值转换后,在预存的三角面测量表中索引取得对应的三角面的顶点信息,并根据顶点信息生成各个体素内的面片;99.整体面片生成模块:基于各个体素内的面片绘制生成整个单位模型生成区域的面片,并根据单位模型生成区域的面片绘制生成整体山脉生成区域。100.优选的,上述着色渲染模块30进一步包括:101.颜色输入准备模块:读取整体山脉生成区域的高度,并生成多个颜色输入的入口,根据所占海拔区间进行每个颜色的调整;102.颜色输入模块:将输入不同海拔区间的颜色进行梯度计算,得到整体山脉生成区域的所有位置的颜色,并保存到2d纹理数据中;103.渲染模块:根据整体山脉生成区域的高度及2d纹理数据,采用平滑函数将颜色按照高度完成渲染。104.本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的基于分层噪声的风格化山脉生成方法的步骤。105.本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的基于分层噪声的风格化山脉生成方法的步骤。106.与现有技术相比本发明技术方案带来的有益效果:本发明方案可以实现镂空甚至有悬浮物的风格化地形地貌,而现方案只能实现普通的丘陵以及山脉。本发明方案针对噪声图没有任何要求,甚至可以生成随机的噪声图,并对各高度渲染颜色进行自定义,现有方案可自定义内容较少。107.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。108.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。109.在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。110.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。111.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。112.所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。113.基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。114.相比于现有技术:本发明关键点和保护点在于海事卫星c系统通信呼叫记录的采集、解析和接通率计算过程。115.以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。116.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1