CN114419215A - 体积云的处理方法、装置和电子设备 - Google Patents

体积云的处理方法、装置和电子设备 Download PDF

Info

Publication number
CN114419215A
CN114419215A CN202111648246.6A CN202111648246A CN114419215A CN 114419215 A CN114419215 A CN 114419215A CN 202111648246 A CN202111648246 A CN 202111648246A CN 114419215 A CN114419215 A CN 114419215A
Authority
CN
China
Prior art keywords
adjusted
volume
cloud
height
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111648246.6A
Other languages
English (en)
Inventor
冯本忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111648246.6A priority Critical patent/CN114419215A/zh
Publication of CN114419215A publication Critical patent/CN114419215A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/603D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种体积云的处理方法、装置和电子设备。其中,该方法包括:获取待调整体积云;根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,其中,第一方向不同于第二方向;基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。本发明解决了现有技术无法对体积云的形态进行分区调整的技术问题。

Description

体积云的处理方法、装置和电子设备
技术领域
本发明涉及模型渲染领域,具体而言,涉及一种体积云的处理方法、装置和电子设备。
背景技术
游戏中天空和大气环境对画面色调和氛围影响是很大的,云是其中一个重要组成部分。利用好体积云可以很好的为我们游戏的画面烘托氛围,增加画面的层次感和趣味性。目前,相关开发引擎内的体积云只能是一层,它默认只能整体去控制云的形态,没法创建多层云,没法分区域去控制,更没法将多种云进行混合。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种体积云的处理方法、装置和电子设备,以至少解决现有技术无法对体积云的形态进行分区调整的技术问题。
根据本发明实施例的一个方面,提供了一种体积云的处理方法,包括:获取待调整体积云;根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,其中,第一方向不同于第二方向;基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。
进一步地,体积云的处理方法还包括:获取待调整体积云对应的第一遮罩贴图所对应的第一颜色通道的第一通道范围以及待调整体积云的宽度信息;将待调整体积云竖直投射至第一遮罩贴图,得到投射结果;根据第一通道范围以及投射结果确定待调整体积云在第一方向上的第一分区范围。
进一步地,体积云的处理方法还包括:获取待调整体积云的高度信息;根据高度信息确定待调整体积云在第二颜色通道中的第二通道范围;根据第二通道范围确定待调整体积云在第二方向上的第二分区范围。
进一步地,体积云的处理方法还包括:基于第一分区范围以及第二分区范围确定待调整体积云的至少一个调整区域;从至少一个调整区域中确定目标调整区域;对待调整体积云的目标调整区域进行形态调整,得到调整后的体积云。
进一步地,体积云的处理方法还包括:在基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云之后,获取多种类型的体积云;对多种类型的体积云进行混合处理,得到混合后的体积云。
进一步地,体积云的处理方法还包括:在获取待调整体积云之前,获取第一纹理贴图以及待调整体积云的初始厚度信息;基于第一纹理贴图中的亮度信息对待调整体积云的初始厚度信息进行调整,得到待调整体积云的目标厚度;获取第二纹理贴图以及待调整体积云的初始高度信息;基于第二纹理贴图中的亮度信息对待调整体积云的初始高度信息进行调整,得到待调整体积云的目标高度;获取第三纹理贴图以及待调整体积云的初始宽度信息,并将第三纹理贴图在第一方向上进行投射,得到投射结果;基于投射结果对待调整体积云的初始宽度信息进行调整,得到待调整体积云的目标宽度;基于目标厚度,和/或,目标高度,和/或,目标宽度生成待调整体积云。
进一步地,体积云的处理方法还包括:在获取待调整体积云之前,获取场景地形高度图;从场景地形高度图中获取待调整体积云所在场景的场景地形高度;计算场景地形高度与待调整体积云的目标高度的差值,得到高度差值;计算高度差值与目标厚度的比值,并根据比值对待调整体积云的高度进行调整。
进一步地,体积云的处理方法还包括:获取场景地形高度图所对应的场景地形;基于场景地形创建代理地形;捕获代理地形的地形信息,将地形信息转换为高度贴图,得到场景地形高度图。
进一步地,体积云的处理方法还包括:获取预设模型所对应的体积贴图;对体积贴图在水平方向上进行偏移,得到偏移后的体积贴图;基于预设模型的三维遮罩空间对偏移后的体积贴图进行调整,得到调整后的体积贴图;基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云。
进一步地,体积云的处理方法还包括:在基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云之后,调整偏移后的体积贴图的纹理空间和三维遮罩空间,确定待调整体积云的摆放位置;基于摆放位置对待调整体积云进行摆放。
进一步地,体积云的处理方法还包括:在基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云之后,获取待调整体积云对应的第一体积贴图;对第一体积贴图进行时间偏移,得到偏移后的第一体积贴图;对偏移后的第一体积贴图进行调整,得到第二体积贴图;计算第二体积贴图的纹理空间与偏移后的体积贴图的纹理空间的乘积,得到扭曲后的纹理空间;基于扭曲后的纹理空间对待调整体积云进行处理,得到目标体积云,其中,目标体积云为随时间动态变化的体积云。
根据本发明实施例的另一方面,还提供了一种体积云的处理装置,包括:获取模块,用于获取待调整体积云;确定模块,用于根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,其中,第一方向不同于第二方向;调整模块,用于基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的体积云的处理方法。
根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的体积云的处理方法。
在本发明实施例中,采用对待调整体积云进行分区调整以得到调整后的体积云的方式,通过先获取待调整体积云,然后根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,从而基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。其中,第一方向不同于第二方向。
在上述过程中,通过确定待调整体积云在两个方向上的分区范围,实现了对待调整体积云在空间上的分区区域的确定。进一步地,通过基于待调整体积云的分区区域对待调整体积云的形态进行分区调整,避免了现有技术中只能整体去控制云的形态的问题,从而提高了体积云的可控性,使得开发者能够基于体积云创建出更具有层次感和趣味性的画面,进而提高用户体验。
由此可见,本申请所提供的方案达到了对待调整体积云进行分区调整以得到调整后的体积云的目的,从而实现了提高体积云的可控性的效果,进而解决了现有技术无法对体积云的形态进行分区调整的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的体积云的处理方法的示意图;
图2是根据本发明实施例的一种可选的第一遮罩贴图的示意图;
图3是根据本发明实施例的一种可选的待调整体积云竖直投射至第一遮罩贴图的示意图;
图4是根据本发明实施例的一种可选的第二颜色通道的示意图;
图5是根据本发明实施例的一种可选的第二颜色通道的示意图;
图6是根据本发明实施例的一种可选的待调整体积云的至少一个调整区域的示意图;
图7是根据本发明实施例的一种可选的对多种类型的体积云进行混合处理的示意图;
图8是根据本发明实施例的一种可选的显示单种类型的体积云的示意图;
图9根据本发明实施例的一种可选的地面云区域的节点的示意图;
图10是根据本发明实施例的一种可选的待调整体积云节点的示意图;
图11是根据本发明实施例的一种可选的待调整体积云的云层高度和云底部高度的示意图;
图12是根据本发明实施例的一种可选的目标宽度为1km的待调整体积云的顶视图;
图13是根据本发明实施例的一种可选的目标宽度为1km的待调整体积云的透视图;
图14是根据本发明实施例的一种可选的待调整体积云的初始高度信息的示意图;
图15是根据本发明实施例的一种可选的基础云节点与待调整体积云的归一化高度相乘的示意图;
图16是根据本发明实施例的一种可选的基础云节点的示意图;
图17是根据本发明实施例的一种可选的基础云节点与待调整体积云的归一化高度相乘后的示意图;
图18是根据本发明实施例的一种可选的对初始高度信息进行加/减法操作的示意图;
图19是根据本发明实施例的一种可选的对初始高度信息进行加/减法操作的示意图;
图20是根据本发明实施例的一种可选的对初始高度信息进行加/减法操作的示意图;
图21是根据本发明实施例的一种可选的对初始高度信息进行加/减法操作的示意图;
图22是根据本发明实施例的一种可选的对初始高度信息进行加/减法操作的示意图;
图23是根据本发明实施例的一种可选的对初始高度信息进行乘法操作的示意图;
图24是根据本发明实施例的一种可选的对初始高度信息进行乘法操作的示意图;
图25是根据本发明实施例的一种可选的对初始高度信息进行乘法操作的示意图;
图26是根据本发明实施例的一种可选的对初始高度信息进行乘法操作的示意图;
图27是根据本发明实施例的一种可选的对初始高度信息进行缩放操作的示意图;
图28是根据本发明实施例的一种可选的对初始高度信息进行缩放操作的示意图;
图29是根据本发明实施例的一种可选的对初始高度信息进行缩放操作的示意图;
图30是根据本发明实施例的一种可选的对调整后的初始高度信息的验证的示意图;
图31是根据本发明实施例的一种可选的对调整后的初始高度信息的验证的示意图;
图32是根据本发明实施例的一种可选的对调整后的初始高度信息的验证的示意图;
图33是根据本发明实施例的一种可选的调整后的初始高度信息对应的待调整体积云的示意图;
图34是根据本发明实施例的一种可选的第二纹理贴图的示意图;
图35是根据本发明实施例的一种可选的待调整体积云的目标高度的示意图;
图36是根据本发明实施例的一种可选的第二纹理贴图的示意图;
图37是根据本发明实施例的一种可选的待调整体积云的目标高度的示意图;
图38是根据本发明实施例的一种可选的待调整体积云的示意图;
图39是根据本发明实施例的一种可选的待调整体积云的初始厚度的示意图;
图40是根据本发明实施例的一种可选的待调整体积云的初始厚度的示意图;
图41是根据本发明实施例的一种可选的待调整体积云的初始厚度的示意图;
图42是根据本发明实施例的一种可选的第一纹理贴图的示意图;
图43是根据本发明实施例的一种可选的待调整体积云的目标厚度的示意图;
图44是根据本发明实施例的一种可选的第一纹理贴图的示意图;
图45是根据本发明实施例的一种可选的待调整体积云的目标厚度的示意图;
图46是根据本发明实施例的一种可选的第一纹理贴图的示意图;
图47是根据本发明实施例的一种可选的的待调整体积云的目标厚度的示意图;
图48是根据本发明实施例的一种可选的第一纹理贴图的示意图;
图49是根据本发明实施例的一种可选的的待调整体积云的目标厚度的示意图;
图50是根据本发明实施例的一种可选的待调整体积云的示意图;
图51是根据本发明实施例的一种可选的待调整体积云的示意图;
图52是根据本发明实施例的一种可选的待调整体积云的示意图;
图53是根据本发明实施例的一种可选的待调整体积云的示意图;
图54是根据本发明实施例的一种可选的高度差值的示意图;
图55是根据本发明实施例的一种可选的设置捕获代理地形的地形信息的示意图;
图56是根据本发明实施例的一种可选的线框贴图的示意图;
图57是根据本发明实施例的一种可选的设置代理地形的材质的示意图;
图58是根据本发明实施例的一种可选的相机位置的示意图;
图59是根据本发明实施例的一种可选的代理地形的示意图;
图60是根据本发明实施例的一种可选的代理地形的示意图;
图61是根据本发明实施例的一种可选的代理地形的示意图;
图62是根据本发明实施例的一种可选的相机位置的示意图;
图63是根据本发明实施例的一种可选的依据代理地形高度图和场景地形高度图生成的待调整体积云的示意图;
图64是根据本发明实施例的一种可选的依据代理地形高度图和场景地形高度图生成的待调整体积云的效果的示意图;
图65是根据本发明实施例的一种可选的依据代理地形高度图和场景地形高度图生成的待调整体积云的效果的示意图;
图66是根据本发明实施例的一种可选的获取体积贴图的示意图;
图67是根据本发明实施例的一种可选的获取体积贴图的示意图;
图68是根据本发明实施例的一种可选的获取体积贴图的示意图;
图69是根据本发明实施例的一种可选的设置体积贴图的示意图;
图70是根据本发明实施例的一种可选的体积贴图的示意图;
图71是根据本发明实施例的一种可选的偏移后的体积贴图的示意图;
图72是根据本发明实施例的一种可选的体积贴图的示意图;
图73是根据本发明实施例的一种可选的偏移后的体积贴图的示意图;
图74是根据本发明实施例的一种可选的偏移后的体积贴图的示意图;
图75是根据本发明实施例的一种可选的待调整体积云的示意图;
图76是根据本发明实施例的一种可选的待调整体积云的示意图;
图77是根据本发明实施例的一种可选的目标体积云的示意图;
图78是根据本发明实施例的一种可选的待调整体积云的示意图;
图79是根据本发明实施例的一种可选的待调整体积云的示意图;
图80是根据本发明实施例的一种可选的待调整体积云的示意图;
图81是根据本发明实施例的一种可选的待调整体积云的示意图;
图82是根据本发明实施例的一种可选的待调整体积云的示意图;
图83是根据本发明实施例的一种可选的体积云的处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种体积云的处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的体积云的处理方法流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取待调整体积云。
在步骤S102中,可以通过计算设备、应用系统、处理器等装置获取待调整体积云,在本实施例中,计算设备可以通过开发引擎绘制待调整体积云或读取存储库中预置的绘制好的待调整体积云,以实现对待调整体积云的获取。其中,待调整体积云可以是单个云,也可以是多个云所对应的集合。
需要说明的是,通过获取待调整体积云,以用于实现后续确定待调整体积云的分区范围。
步骤S104,根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,其中,第一方向不同于第二方向。
在步骤S104中,待调整体积云的宽度信息至少包括待调整体积云在水平方向上的宽度,待调整体积云的高度信息可以是待调整体积云云在竖直方向上的自身高度,也可以是待调整体积云在竖直方向上的归一化高度,第一方向可以是水平方向,也可以是与水平方向产生一定夹角的方向,第二方向可以是竖直方向,也可以是与竖直方向产生一定夹角的方向。第一分区范围所对应的分区数量与第二分区范围所对应的分区数量可以相同,也可以不同。
需要说明的是,通过确定待调整体积云在两个方向上的分区范围,以用于实现后续对待调整体积云在空间上的分区区域的确定。
步骤S106,基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。
在步骤S106中,计算设备可基于分区范围确定待调整体积云在空间上的分区区域,并可以基于分区区域对待调整体积云的高度、厚度、宽度进行分区调整,同样的,也可以对待调整体积云的材质、颜色、纹理等数据进行分区调整。在调整过程中,计算设备可以仅对待调整体积云的部分分区区域进行调整,也可以对待调整体积云的全部分区区域进行调整。
需要说明的是,通过基于分区范围对待调整体积云进行分区调整,避免了现有技术中只能整体去控制云的形态的缺陷,从而提高了体积云的可控性,使得开发者能够基于体积云创建出更具有层次感和趣味性的画面,进而提高用户体验。
基于上述步骤S102至步骤S106所限定的方案,可以获知,在本发明实施例中,采用对待调整体积云进行分区调整以得到调整后的体积云的方式,通过先获取待调整体积云,然后根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,从而基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。其中,第一方向不同于第二方向。
容易注意到的是,在上述过程中,通过确定待调整体积云在两个方向上的分区范围,实现了对待调整体积云在空间上的分区区域的确定。进一步地,通过基于待调整体积云的分区区域对待调整体积云的形态进行分区调整,避免了现有技术中只能整体去控制云的形态的问题,从而提高了体积云的可控性,使得开发者能够基于体积云创建出更具有层次感和趣味性的画面,进而提高用户体验。
由此可见,本申请所提供的方案达到了对待调整体积云进行分区调整以得到调整后的体积云的目的,从而实现了提高体积云的可控性的效果,进而解决了现有技术无法对体积云的形态进行分区调整的技术问题。
在一种可选的实施例中,在根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围的过程中,计算设备获取待调整体积云对应的第一遮罩贴图所对应的第一颜色通道的第一通道范围以及待调整体积云的宽度信息,然后将待调整体积云竖直投射至第一遮罩贴图,得到投射结果,从而根据第一通道范围以及投射结果确定待调整体积云在第一方向上的第一分区范围。
可选的,在本实施例中,待调整体积云对应的第一遮罩贴图为二维遮罩贴图2DMask,如图2所示,第一颜色通道为图2中二维遮罩贴图2D Mask对应的RGBA通道,该RGBA通道包括三条颜色通道(R通道、G通道、B通道),第一通道范围表征前述RGBA通道中的各通道所对应的范围。如图3所示,计算设备获取待调整体积云及其宽度信息,然后在水平面做2DMask投射(二维遮罩投射),以将待调整体积云竖直投射至二维遮罩贴图2D Mask,从而得到投射结果。其中,计算设备可以将投射至二维遮罩贴图2D Mask同一通道范围的待调整体积云区域确定为属于第一方向上的同一分区范围,将投射至二维遮罩贴图2D Mask不同通道范围的待调整体积云区域确定为属于第一方向上的不同分区范围,由此,实现对待调整体积云在第一方向上的第一分区范围的确定。在本实施例中,第一方向为水平方向。
需要说明的是,通过将待调整体积云投射在第一遮罩贴图上,以确定待调整体积云的第一分区范围,可以有效避免参数交叉影响,从而实现了对第一分区范围快速且准确的确定。
在一种可选的实施例中,在根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围的过程中,计算设备获取待调整体积云的高度信息,然后根据高度信息确定待调整体积云在第二颜色通道中的第二通道范围,从而根据第二通道范围确定待调整体积云在第二方向上的第二分区范围。
可选的,在本实施例中,计算设备可以将UE4(虚幻4引擎,Unreal Engine 4)中的Curve Atlas Row Parameter节点里的RGBA通道确定为第二颜色通道,如图4所示,该RGBA通道同样包括三条颜色通道(R通道、G通道、B通道)。计算设备根据高度信息中待调整体积云的归一化高度确定第二通道范围,第二通道范围表征Curve Atlas Row Parameter节点里的RGBA通道中的各通道所对应的范围。之后,如图5所示,计算设备将属于同一通道范围的待调整体积云区域确定为属于第二方向上的同一分区范围,将属于不同通道范围的待调整体积云区域确定为属于第二方向上的不同分区范围。由此,实现对待调整体积云在第二方向上的第二分区范围的确定。在本实施例中,第一方向为竖直方向。
需要说明的是,通过根据第二通道范围确定待调整体积云的第二分区范围,实现了对待调整体积云高度的分区,从而使得后续能够对不同高度的体积云的形态进行改变,进而使得画面中的体积云的形态更符合实际表现,提高了体积云的真实性和生动性。
在一种可选的实施例中,在基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整的过程中,计算设备可以先基于第一分区范围以及第二分区范围确定待调整体积云的至少一个调整区域,然后从至少一个调整区域中确定目标调整区域,最后对待调整体积云的目标调整区域进行形态调整,从而得到调整后的体积云。
可选的,当计算设备确定了第一分区范围和第二分区范围后,计算设备可以取第一分区范围和第二分区范围的交集,以确定待调整体积云的在空间上的至少一个调整区域。具体地,如图6所示,依照待调整体积云的云层高度将调整区域(即图六中的体积云容积)分为高层云区域、低层云区域和地面云区域,其中,高层云区域表征属于二维遮罩贴图2D Mask中的R通道范围与Curve Atlas Row Parameter节点中的R通道范围的交集区域的待调整体积云区域;低层云区域表征属于二维遮罩贴图2D Mask中的G通道范围与CurveAtlas Row Parameter节点中的G通道范围的交集区域的待调整体积云区域;地面云区域表征属于二维遮罩贴图2D Mask中的B通道范围与Curve Atlas Row Parameter节点中的B通道范围的交集区域的待调整体积云区域。如图7所示,计算设备可在UE4中将待调整体积云中的高层云分别与二维遮罩贴图2D Mask中的R通道和Curve Atlas Row Parameter节点中的R通道相乘以获取高层云区域,将待调整体积云中的低层云分别与二维遮罩贴图2D Mask中的G通道和Curve Atlas Row Parameter节点中的G通道相乘以获取低层云区域,将待调整体积云中的地面云分别与2D Mask中的B通道和Curve Atlas Row Parameter节点中的B通道相乘以获取地面云区域。
之后,计算设备可以通过获取人工输入的指令,确定高层云区域、低层云区域和地面云区域中的至少一个区域为目标调整区域,并根据人工输入的参数或预置的调整口令对目标调整区域进行调整,以得到调整后的体积云。
需要说明的是,通过基于第一分区范围以及第二分区范围确定待调整体积云的至少一个调整区域,实现了对待调整体积云在空间上的分区区域的确定,从而以便于对待调整体积云的各个调整区域进行调整。
在一种可选的实施例中,在基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云之后,计算设备可以获取多种类型的体积云,并对多种类型的体积云进行混合处理,从而得到混合后的体积云。
具体地,在计算设备得到调整后的体积云之后,计算设备可以将调整后的体积云与未调整过的体积云相混合,也可以与调整后的体积云相混合,其中,多种类型的体积云表征高层云区域、低层云区域以及地面云区域中的至少一种。如图7所示,将高层云区域、低层云区域以及地面云区域基于Add的方式链接,并将Add节点的输出端连接到UE4中的Conservative Density和Extinction,即可实现对多种类型的体积云混合处理,即在场景中同时显示所混合的多种类型的体积云。
可选的,如图8所示,当在场景中只想显示一种类型的体积云时,只需将对应的类型的体积云直接连接到UE4中的Conservative Density和Extinction即可。其中,地面云区域的节点如图9所示,一方面,计算设备将场景地形高度图与待调整体积云的云底部高度相减得到第一差值,然后将该第一差值除以待调整体积云的云层高度,得到第一结果,之后,将第一结果与待调整体积云的归一化高度相减,得到第二差值,将第二差值与Height Bias节点中的数据相减,得到第三差值,然后将第三差值与Height Bias节点中的数据相除,得到第二结果,并将第二结果连接到Custom节点中的高度通道Nor Altitude;另一方面,计算设备将代理地形高度图与场景地形高度图相减,得到第四差值,然后与Clamp节点(强制范围节点)相连,并将Clamp节点的输出连接至Custom节点中的云类型通道CloudType。之后,将Custom节点与3D噪音3D Noise相乘,从而得到地面云区域的节点。
需要说明的是,通过将多种类型的体积云相混合,以便于在场景中实现云雾缭绕、云层高低错落的效果,从而丰富画面,增加画面层次感。
在一种可选的实施例中,在获取待调整体积云之前,计算设备可以获取待调整体积云的目标厚度、目标高度以及目标宽度,并基于目标厚度,和/或,目标高度,和/或,目标宽度生成待调整体积云。
可选的,在计算设备获取待调整体积云的目标宽度的过程中,计算设备可以通过获取第三纹理贴图以及待调整体积云的初始宽度信息,并将第三纹理贴图在第一方向上进行投射,得到投射结果,然后基于投射结果对待调整体积云的初始宽度信息进行调整,以得到待调整体积云的目标宽度。
具体地,首先对待调整体积云进行说明。世界位置(world position)是X,Y,Z三个信息,它的单位是cm,云的单位是km,待调整体积云在X,Y轴方向是无限平铺的,它就像一个长宽无限但高度可控的一个Box容积。在UE4中,如图10、11所示,待调整体积云节点上有两个控制高度的属性,分别是Layer Bottom Altitude节点属性和Layer Height节点属性,其中,Layer Bottom Altitude控制Box离地面多高(即待调整体积云的云底部高度),LayerHeight控制Box自身高度(即待调整体积云的云层高度),例如:在图10中,计算设备在Layer节点中通过Layer Bottom Altitude将待调整体积云的云底部高度设置为5cm,通过LayerHeight将待调整体积云的云层高度设置为10cm,通过Tracing Start Max Distance将待调整体积云的追踪最大开始距离设置为350cm,通过Tracing Max Distance将待调整体积云的追踪最大距离设置为50cm。需要说明的是,所以在没有任何贴图控制待调整体积云的情况下,待调整体积云会充满整个Box。
进一步地,在本实施例中,计算设备可基于人工输入的参数获取待调整体积云的初始宽度信息,并通过一张黑白图(即第三纹理贴图)去控制待调整体积云的宽度及长度。在UE4中,计算设备将待调整体积云在世界位置X,Y轴平面进行投射,得到投射结果,然后将UE4中的Tilling Method改为Clamp节点(强制范围节点),以使得待调整体积云只存在在纹理坐标UV0-1的区间内,也就是世界位置0-1cm。之后,计算设备将前述的世界位置除以100000,得到0-1km大小的坐标UV,也即得到待调整体积云的目标宽度和目标长度。具体地,目标宽度和目标长度均为1km的待调整体积云的顶视图如图12所示,透视图如图13所示。
可选的,计算设备可以通过获取第二纹理贴图以及待调整体积云的初始高度信息,并基于第二纹理贴图中的亮度信息对待调整体积云的初始高度信息进行调整得到待调整体积云的目标高度。
其中,待调整体积云的初始高度信息至少包括待调整体积云的归一化高度,计算设备可以通过获取待调整体积云的云层高度以及待调整体积云的云底部高度,并基于UE4中的Cloud Sample Attributes节点确定待调整体积云的归一化高度、待调整体积云的世界高度以及待调整体积云的自身高度。如图14所示,以待调整体积云的云底部高度为2km,待调整体积云的云层高度为1km为例,待调整体积云的世界高度等于0到其云底部高度和云层高度之和的线性值,即3km;待调整体积云的自身高度等于0到其云层高度的线性值,即1km;待调整体积云的归一化高度等于其自身高度除以云层高度的值,即0-1的线性值。由此看出,不管待调整体积云的参数有任何变化,待调整体积云的归一化高度都会是0到1,因此,可以将待调整体积云的归一化高度作为云的初始高度信息以得到目标高度。
具体地,在本实施例中,如图15所示,计算设备将待调整体积云的归一化高度与基础云节点相乘,以对待调整体积云进行初始渲染,其中,基础云节点如图16所示,基础云节点与待调整体积云的归一化高度相乘后的效果如图17所示。其中,在将待调整体积云的归一化高度与基础云节点相乘之前,需要对待调整体积云的归一化高度增加一个减法和乘法。
其中,对关于待调整体积云的归一化高度进行的减法操作进行说明。在本实施例中,如图18所示,将待调整体积云的归一化高度减去0到1的值,可以让待调整体积云往上升,加0到1的值可以让待调整体积云往下降,为了方便从底部控制待调整体积云,优选的,让待调整体积云从底部上升,即对待调整体积云的归一化高度进行减法。当待调整体积云的归一化高度保持不变时,待调整体积云如图19所示,当前述的归一化高度减去0.5时,待调整体积云如图20所示,会上升“0.5*云层高度”的高度,但超出Box容积的那一半会被剪裁;当前述的归一化高度减去1时,如图21所示,整个待调整体积云会脱离它的Box容积,待调整体积云会被整个剪裁掉从而不会生成;当前述的归一化高度加0.5时,待调整体积云如图22所示,会下降“0.5*云层高度”的高度。因此,还需要对待调整体积云的归一化高度再进行乘法处理。
如图23所示,为了可以控制待调整体积云的高度,但其厚度不受影响,需要把如图24所示的待调整体积云的归一化高度乘以一个值N,从而得到一个0到N的线性值,则0到1的区间转换为了0到(1/N),等同于高度缩小了N倍;例如,如图25所示,N=2时,待调整体积云在0-1的高度等原来高度的一半;又例如,如图26所示,N=4时,待调整体积云在0-1的高度等原来高度的1/4。由于待调整体积云的归一化高度是由其自身高度除以云层高度得来的,输出的是0-1的范围值,因此,从图24、图25以及图26中可以看出,在将其归一化高度乘以N(比如:4)的过程中,待调整体积云的真实高度没变,只是归一化高度值变成了0-4的范围值,此时调整体积云0-1的高度只有真实高度的1/4,故而,如果把待调整体积云的归一化高度中小于0和大于1的值设置为0,这时便会得到一个缩放过的待调整体积云的归一化高度值,也就是真实高度缩放过的0-1的渐变。以如图27所示的待调整体积云的归一化高度*2为例,待调整体积云的归一化高度的值扩大了2倍,变为了0-2,待调整体积云厚度如图28所示,变为原来的1/2,同样的,若待调整体积云的归一化高度*4,则待调整体积云的归一化高度的值扩大了4倍,变为了0-4,待调整体积云厚度如图29所示,变为原来的1/4。在本实施例中,计算设备可以通过UE4中的HLSL(高阶着色器语言,High Level Shading Language)去设置,代码如下所示:
Figure BDA0003444289450000141
Figure BDA0003444289450000151
为了验证上述结果,计算设备可以在UE4中断掉自定义节点,采用fmod节点,如图30所示,将待调整体积云的归一化高度对应的0-4区间转换为4个连续的0-1区间的值,以得到4层待调整体积云,4层待调整体积云效果如图31所示。为了分层更明显一些,可以再加入Power节点增强对比,调整后的效果如图32所示。之后,计算设备在UE4中去掉fmod节点和Power节点,重新连上自定义节点,并通过Height Bias节点在待调整体积云的归一化高度*4之前将前述的归一化高度减去任意0-1之间的值,便可以实现待调整体积云在升高,而不会被裁剪的效果,如果减去大于或等于1的数,待调整体积云则会超出Box容积而不会生成。其中,在待调整体积云的归一化高度*4之前减去0,即(待调整体积云的归一化高度-0)*4对应的效果图如图33中的a图所示;在待调整体积云的归一化高度*4之前减去0.2,即(待调整体积云的归一化高度-0.2)*4对应的效果图如图33中的b图所示;在待调整体积云的归一化高度*4之前减去0.5,即(待调整体积云的归一化高度-0.5)*4对应的效果图如图33中的c图所示;在待调整体积云的归一化高度*4之前减去0.75,即(待调整体积云的归一化高度-0.75)*4对应的效果图如图33中的d图所示;在待调整体积云的归一化高度*4之前减去1,即(待调整体积云的归一化高度-1)*4对应的效果图如图33中的e图所示。
进一步地,计算设备将UE4中的Height Bias节点采用黑白图(即第二纹理贴图)进行代替,并将进行过减法和乘法的待调整体积云的归一化高度(初始高度信息)减去该黑白图,即可实现基于黑白图中的亮度信息对待调整体积云的归一化高度进行调整得到待调整体积云的目标高度的效果。其中,当第二纹理贴图如图34所示时,得到的待调整体积云的目标高度如图35所示,当第二纹理贴图如图36所示时,得到的待调整体积云的目标高度如图37所示。
可选的,计算设备可以通过获取第一纹理贴图以及待调整体积云的初始厚度信息,并基于第一纹理贴图中的亮度信息对待调整体积云的初始厚度信息进行调整得到待调整体积云的目标厚度。
具体地,当对待调整体积云的归一化高度进行过减法和乘法后,待调整体积云被限制在了一定的范围内,例如:(待调整体积云的归一化高度-0.5)*4对应的待调整体积云的范围如图38所示,因此,需要在所限制的范围内对待调整体积云的厚度进行调整。计算设备可以在UE4中将待调整体积云的归一化高度小于CloudType通道中的值设置为1,等于或者大于CloudType通道中的值、小于0.01或者大于0.99的值设置为0,从而等同于一个值为1或者0的黑白遮罩。这样输出的值是将基于调整过高度和位置的待调整体积云的归一化高度,再次通过CloudType通道中的值做二次高度调整,等于是把待调整体积云限定到一个的高度范围内再做调整,即实现对待调整体积云的初始厚度信息的确定与获取。其中,CloudType通道中的值为1时所对应的待调整体积云的初始厚度如图39所示;CloudType通道中的值为0.5时所对应的待调整体积云的初始厚度如图40所示;CloudType通道中的值为0.2时所对应的待调整体积云的初始厚度如图41所示。计算设备可以基于默认材质球内里面提供的HLSL代码实现上述效果,代码如下所示:
Figure BDA0003444289450000161
进一步地,计算设备在UE4中给CloudType通道连上一张黑白图(即第一纹理贴图),以根据该黑白图亮度来确定哪里的待调整体积云厚,哪里的待调整体积云薄。具体地,黑白图亮的地方所对应的待调整体积云厚,黑白图暗的地方所对应的待调整体积云薄,亮度为0的地方没有云。其中,当第一纹理贴图如图42所示,亮度为100时,得到的待调整体积云的目标厚度如图43所示;当第一纹理贴图如图44所示,亮度为0(对应黑色)和100(对应白色)时,得到的待调整体积云的目标厚度如图45所示;当第一纹理贴图如图46所示,亮度为圆形渐变时,得到的待调整体积云的目标厚度如图47所示;当第一纹理贴图如图48所示,亮度为阶梯渐变时,得到的待调整体积云的目标厚度如图49所示。
由此,当计算设备获取到待调整体积云的目标厚度、目标高度以及目标宽度后,计算设备可以基于其中任一或两两组合或是全部组合的方式生成待调整体积云。可选的,如果计算设备将UE4中的Height Bias节点连上一张棋盘格贴图,并用UE4中的BiasIntensity节点控制它的强度,将UE4中的CloudType通道连上一张阶梯渐变贴图,即可实现基于待调整体积云的目标高度(对应Height Bias节点所连接的图)和目标厚度(对应CloudType通道所连接的图)相结合的方式生成待调整体积云,在Bias Intensity节点中的值取0的情况下所生成的待调整体积云如图50所示,在Bias Intensity节点中的值取0.1的情况下所生成的待调整体积云如图51所示,在Bias Intensity节点中的值取0.4的情况下所生成的待调整体积云如图52所示,在Bias Intensity节点中的值取1的情况下所生成的待调整体积云如图53所示。
需要说明的是,通过基于纹理贴图和待调整体积云的初始信息获取待调整体积云的目标厚度、目标高度以及目标宽度,并生成待调整体积云,实现了对待调整体积云的自定义绘制,从而提高了待调整体积云的多样性,进而可以使得画面内容更加具有观赏性。
在一种可选的实施例中,在确定了待调整体积云的目标厚度、目标高度以及目标宽度之后,且在计算设备获取待调整体积云之前,计算设备可以获取场景地形高度图,并从场景地形高度图中获取待调整体积云所在场景的场景地形高度,然后计算场景地形高度与待调整体积云的目标高度的差值,得到高度差值,最后计算高度差值与目标厚度的比值,并根据比值对待调整体积云的高度进行调整。
可选的,计算设备可以将前述中用于控制待调整体积云高度的Height Bias节点中的贴图以场景地形高度图来替代,这样待调整体积云底部就会跟地形匹配,其中,高度值要转换成待调整体积云的归一化高度的0-1的区间值。如图54所示,待调整体积云的自身高度为1km,计算设备可以从场景地形高度图获取场景地形高度,然后直接拿场景地形高度减去待调整体积云的云底部高度(即目标高度),得到高于“地形基于待调整体积云的云底部高度”的高度(即高度差值),然后除以待调整体积云的云层高度(即目标厚度),从而得到等比的待调整体积云的归一化高度位移值,进而根据该位移值对待调整体积云的高度进行调整。
需要说明的是,通过基于场景地形高度、待调整体积云的目标高度以及目标厚度对待调整体积云的高度进行调整,实现了将待调整体积云底部与场景地形的准确匹配,进而使得画面中的云更加真实、生动。
在一种可选的实施例中,在计算设备获取场景地形高度图的过程中,计算设备通过获取场景地形高度图所对应的场景地形,然后基于场景地形创建代理地形,最后捕获代理地形的地形信息,将地形信息转换为高度贴图,从而得到场景地形高度图。
可选的,计算设备可以UE4中创建场景地形,然后基于场景地形新创建一个代理地形In_HeightProxy,并调整代理地形的大小以使代理地形略大于整个场景范围,其中,代理地形设置在场景地形下方,以实现对代理地形的获取。之后,计算设备在UE4中创建一个二维场景贴图Scene Capture 2D,并创建一个新的渲染目标纹理贴图Render TargetTexture,然后调整相机位置和旋转以让其可以捕获整个代理地形的地形信息。在捕获过程中,计算设备通过调低视场Field of View的值来减少相机的透视,此时相机视图会很小,因此需要把场景捕获相机拉到很远的位置,再次调整相机位置让相机把整个代理地形捕获进来。同时,计算设备将UE4设置为只捕获代理地形,关掉每帧捕获和移动时捕获,并关掉Show Flag捕获类型,只保留Landscape,以保证UE4运行时的性能。
进一步地,为了捕获代理地形的高度需要为地形创建一个带高度信息的材质,这样世界位置的B通道输出的就是代理地形的高度值。具体地,计算设备创建新的材质,并将混合模式改为Masked,着色模式改为Unlit,把世界位置Z大于0设置为红色,小于0设置为蓝色,连接到自发光,然后把这个材质给到代理地形,以方便场景捕获相机捕获代理地形的高度为高度贴图,供待调整体积云材质使用。之后,操作人员可通过计算设备在UE4中制作一个编辑器Editor Ultility Widget,并设置只有在绘制代理地形的才捕获代理地形,如图55所示,该编辑器设置有捕获控件Live、开始控件Start以及结束控件Stop。其中,当操作人员点击开始控件时,编辑器隐藏影响自身性能的组件,并将AA(抗锯齿,Anti Aliasing)设置为0,当操作人员点击结束控件时,编辑器捕获地形,并还原开始前的设置;当操作人员点击捕获控件中的捕获按钮时,编辑器每隔0.1s捕获一次地形,并在操作人员再次点击捕获控件中的捕获按钮时停止捕获。在捕获过程中,捕获控件中的捕获按钮根据点击奇偶数变色,且捕获控件的界面设置有文本提示窗口。
为了方便查看和绘制代理地形,计算设备在UE4中,用一张线框贴图连接到自发光通道和透明通道上,线框贴图如图56所示,调整线框贴图颜色和重复度,并使线框贴图受高度控制,用相机距离给线框材质和实体材质两套材质做切换。具体地,如图57所示,计算设备将线框材质连接到第一材质Lerp节点中的A通道,将实体材质连接第一材质Lerp节点中的B通道,将线框通道连接到第二材质Lerp节点的A通道,将“1”节点连接到第二材质Lerp节点的B通道,并将第一材质Lerp节点连接到M_LandscapeHeightGrid_01节点中的自发光通道Emissive Color上,将第二材质Lerp节点连接到M_LandscapeHeightGrid节点中的透明通道Opacity Mask上。同时,计算设备还在UE4中的地形材质内,创建Camera Position节点,由于场景捕获相机从上往下捕获地形,材质要在Z轴做切换,所以取相机世界位置B通道作为两套材质Lerp节点的遮罩Mask,即依据相机Z轴位置生成遮罩。由于Camera Position节点中的数据是cm单位,整体值会很大,不方便调节,所以可以把它除以100000,让它以km单位计算,然后通过saturate节点得到一个Z小于0为0,大于1为1,中间0-1长度为1km的值,如图58所示。这样如图57所示将相机Z轴位置Mask分别连接到第一材质Lerp节点的Alpha通道和第二材质Lerp节点的Alpha通道,就可以根据相机的高度为材质做切换了。进一步地,如图59所示,只有相机Z轴位置低于0的时候,才会显示代理地形线框,而相机较远时,如图60、图61所示,则会显示代理地形实体,由于需要在地形上方绘制查看,所以需要把这个0往上移,减去一个距离值DiStance(km),来调整材质切换距离范围,调整如图62所示。
更进一步地,计算设备将捕获完代理地形的地形信息后的Render TargetTexture贴图(即高度贴图)直接给到待调整体积云材质上,这样在绘制地形时待调整云材质就可以实时获取代理地形的高度图来生成待调整体积云。同样的,场景地形高度图也可以用同样的材质去获取,且场景地形只需要捕获一次,并直接转换成静态贴图供材质使用,由此实现对场景地形高度图的获取。其中,计算设备依据代理地形高度图和场景地形高度图生成的待调整体积云的效果如图63、图64、图65所示。
需要说明的是,通过捕获代理地形的地形信息以获取场景地形高度图,实现了对场景地形高度图的准确获取,从而使得依据该场景地形高度图调整得到的待调整体积云的高度与该场景地形更加配合,进而使得待调整体积云具有更真实的显示效果。
在一种可选的实施例中,计算设备可以获取预设模型所对应的体积贴图,并对体积贴图在水平方向上进行偏移,得到偏移后的体积贴图,然后基于预设模型的三维遮罩空间对偏移后的体积贴图进行调整,得到调整后的体积贴图,从而基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云。
可选的,体积贴图为预设模型所对应的三维贴图。在本实施例中,以图66中所示的猫的模型为例,计算设备可以在UE4的houdini节点中将猫的模型转为图67中所示的cloud(云),输出体积贴图Volume Texture,然后将体积贴图连接到云的材质节点上,得到一个图68中所示的无限重复的猫形状的云。之后,计算设备在UE4中创建一个Actor蓝图节点,将其命名为BP_CustomCloud_01,优选的,为了方便获取节点位置,计算设备可基于相关控件中的Add Component添加一个球体,并获取球体的世界位置World Localtion、世界范围WorldScale、前向量Front Vector、光向量Right Vector和上向量Up Vector传输到MPC节点。其中,需要说明的是,世界范围Wolrd Scale的X轴与是UV空间Y轴,世界范围Wolrd Scale的Y轴与是UV空间X轴,所以计算设备需要将X,Y轴做一个转换。之后,计算设备在UE4的云材质内将MPC节点中的位置信息连接到UE4中的三维遮罩空间BoxMask-3D,并将这个三维遮罩空间BoxMask-3D直接连到云节点上。其中,为了方便调节体积云的大小,计算设备可以将世界范围World Scale乘以100000,以千米为单位。计算设备在场景内拽入一个体积云节点,并将这个材质给到体积云,同时将蓝图拽入场景,位移旋转归零,大小为1。由于体积云只在容积BOX内生成,所以需要让云底部覆盖到原点附近,以保证能够在场景中显示出体积云。具体地,由于Layer Bottom Altitude设置面板做了强制范围Clamp,所以计算设备可以利用蓝图节点将体积云节点上Layer Bottom Altitude对应的数值调为-1,然后得到一个方块云,这时移动旋转缩放BP_CustomCloud_01蓝图,方块云会随着一起变换。之后,计算设备可以把三维遮罩空间BoxMask-3D与猫的体积贴图Volume Texture相乘,以基于前述方块云把单独的猫抠出来,抠出来的云如图69所示。
需要说明的是,体积贴图Volume Texture是按UV(纹理空间)显示,其中,体积贴图的纹理空间使用的是世界位置,纹理空间在整数和整数之间不断重复。因此,在图69中,猫显示不完整,而且分散在方块的4个角落,猫的轴心跟蓝图节点的轴心不一致。例如,0-1是一个UV区间,其为一个完整的体积贴图,如果UV区间为0-4,则会重复4次。而原点为整数位置,所以是UV区域的交叉点,体积贴图显示如图70所示。
为了使体积贴图轴心在原点,则需要对UV空间进行偏移,例如,将UV空间的各个方向各偏移0.5,以世界位置XY轴为UV空间中的UV。需要说明的是,将UV空间中的UV的各个方向各偏移0.5,使得左下角的贴图的中心位于原点,得到如图71所示的体积贴图。其中,世界位置XY无论缩放多少,UV只要各偏移0.5轴心即可到达原点,以图72、73为例,图72是偏移前的效果图,图73是偏移后的效果图。同理,体积贴图VolumeTexture的XY、XZ、YZ三个UV各偏移0.5,轴心即可到达原点。之后,为了将体积贴图VolumeTexture的纹理空间大小与三维遮罩空间BoxMask-3D相匹配,让体积贴图VolumeTexture中轴心位于世界原点,与蓝图节点位置统一,UV需要在三个轴各偏移0.5,从而得到偏移后的体积贴图VolumeTexture,如图74所示,偏移后的体积贴图VolumeTexture是一个完整的猫。
进一步地,由于前述得到的完整的猫并不能实现摆放,缩放旋转也都不会有效果,而三维遮罩空间BoxMask-3D是能跟随蓝图的,因此,本申请将三维遮罩空间BoxMask-3D的纹理坐标连到体积贴图VolumeTexture上,并进行如下调整:
步骤1,计算Volume Texture的UV空间的B通道与-1的乘积,需要说明的是,houdini的空间坐标跟UV空间不一致,输出的贴图在某个轴向上与实际贴图的互为反向,因此,Volume Texture的UV的B通道与-1相乘,可以避免猫在Z轴颠倒;
步骤2,计算Volume Texture的UV空间与100000的比值,需要说明的是,由于三维遮罩空间BoxMask-3D对世界范围World Scale乘了100000,以千米为单位,因此,需要将UV空间除以100000,以使得0-1区间的UV长度变成一千米,即与三维遮罩空间BoxMask-3D相配合;
步骤3,计算Volume Texture的UV与世界范围World Scale的比值。
由此,得到了调整后的体积贴图,计算设备可以基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云。
需要说明的是,通过基于三维遮罩空间对体积贴图进行调整,并将调整后的体积贴图对预设模型进行渲染,能够实现对单个云进行摆放的效果,进而提高了画面中体积云多样性。
在一种可选的实施例中,在基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云之后,计算设备可以调整偏移后的体积贴图的纹理空间和三维遮罩空间,确定待调整体积云的摆放位置,从而基于摆放位置对待调整体积云进行摆放。
可选的,当计算设备得到了被三维遮罩空间BoxMask-3D遮罩出来的单独的猫,即待调整体积云之后,计算设备可以通过调整蓝图的位置、大小、旋转,并同步控制体积贴图Volume Texture的UV空间和三维遮罩空间BoxMask-3D,以确定待调整体积云的摆放位置,摆放的效果图如图75、图76所示。
需要说明的是,通过调整偏移后的体积贴图的纹理空间和三维遮罩空间,实现了对待调整体积云摆放位置的改变,从而提高了待调整体积云的可控性。
在一种可选的实施例中,在基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云之后,计算设备可以获取待调整体积云对应的第一体积贴图,并对第一体积贴图进行时间偏移,得到偏移后的第一体积贴图,然后对所述偏移后的第一体积贴图进行调整,得到第二体积贴图,并计算第二体积贴图的纹理空间与偏移后的体积贴图的纹理空间的乘积,得到扭曲后的纹理空间,并基于扭曲后的纹理空间对待调整体积云进行处理,得到目标体积云,其中,目标体积云为随时间动态变化的体积云。
可选的,为了让前述得到的猫形的待调整体积云可以有流动的动画,需要对猫的体积贴图Volume Texture的UV空间进行扭曲。具体地,计算设备获取另外一张可重复的Volume Texture(即第一体积贴图),给它的UV(即第一体积贴图的纹理空间)加上大小控制时间偏移得到偏移后的第一体积贴图,之后调节偏移后的第一体积贴图的对比和强度,从而得到第二体积贴图,之后,计算设备将第二体积贴图与前述偏移后的体积贴图(如图74所示)的纹理空间相乘,从而得到扭曲后的纹理空间,计算设备基于扭曲后的纹理空间对待调整体积云进行处理所得到的目标体积云如图77所示。
需要说明的是,通过基于扭曲后的纹理空间对待调整体积云进行处理,使得待调整体积云本身具有了流动动画,从而使得待调整体积云变得更加生动。
进一步地,当需要多个可摆放的待调整体积云时,只需创建多个蓝图和MPC值,并在材质内将各组通过add节点连接即可。其中,需要强调的是,可摆放的待调整体积云同样可以基于Add节点与前述的多种类型的待调整体积云进行混合,如图7所示,将可摆放的待调整体积云A(即图7中的可摆放的云A)和可摆放的待调整体积云B(即图7中的可摆放的云B)分别与Add节点相连,从而提高画面中体积云的多样性。本公开在游戏场景中所显示的待调整体积云如图78、79、80、81以及82所示。
需要说明的是,一方面,本公开利用云的世界位置和UE4中的Cloud SampleAttributes节点,结合场景地形高度图一起控制待调整体积云的生成位置和高度,并通过二维场景贴图Scene Capture 2D实时获取地形高度图,实现了绘制待调整体积云的功能,另一方面,通过将蓝图的位置大小旋转信息与材质内3D UV空间做关联,使用纹理贴图Volume Texture和三维遮罩空间BoxMask-3D实现了待调整体积云的可摆放功能;再一方面,本公开结合利用Mask贴图和CurveAtlas做蒙版,实现了对待调整体积云不同分区区域的云的形态,高度和动态的控制,并实现了对这些待调整体积云的混合。
由此可见,本申请所提供的方案达到了对待调整体积云进行分区调整以得到调整后的体积云的目的,从而实现了提高体积云的可控性的效果,进而解决了现有技术无法对体积云的形态进行分区调整的技术问题。
根据本发明实施例,还提供了一种体积云的处理正在实施例,其中,图83是根据本发明实施例的体积云的处理装置的示意图,如图83所示,该装置包括:
获取模块202,用于获取待调整体积云;
确定模块204,用于根据待调整体积云的宽度信息确定待调整体积云在第一方向上的第一分区范围,并根据待调整体积云的高度信息确定待调整体积云在第二方向上的第二分区范围,其中,第一方向不同于第二方向;
调整模块206,用于基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云。
需要说明的是,上述获取模块202、确定模块204以及调整模块206对应于上述实施例中的步骤S102至步骤S106,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。
可选的,确定模块包括:第一获取模块、投射模块以及第一确定模块。其中,第一获取模块,用于获取待调整体积云对应的第一遮罩贴图所对应的第一颜色通道的第一通道范围以及待调整体积云的宽度信息;投射模块,用于将待调整体积云竖直投射至第一遮罩贴图,得到投射结果;第一确定模块,用于根据第一通道范围以及投射结果确定待调整体积云在第一方向上的第一分区范围。
可选的,确定模块包括:第二获取模块、第二确定模块以及第三确定模块。其中,第二获取模块,用于获取待调整体积云的高度信息;第二确定模块,用于根据高度信息确定待调整体积云在第二颜色通道中的第二通道范围;第三确定模块,用于根据第二通道范围确定待调整体积云在第二方向上的第二分区范围。
可选的,调整模块包括:第四确定模块、第五确定模块以及第一调整模块。其中,第四确定模块,用于基于第一分区范围以及第二分区范围确定待调整体积云的至少一个调整区域;第五确定模块,用于从至少一个调整区域中确定目标调整区域;第一调整模块,用于对待调整体积云的目标调整区域进行形态调整,得到调整后的体积云。
可选的,体积云的处理装置还包括:第三获取模块以及混合模块。其中,第三获取模块,用于在基于第一分区范围以及第二分区范围对待调整体积云的形态进行分区调整,得到调整后的体积云之后,获取多种类型的体积云;混合模块,用于对多种类型的体积云进行混合处理,得到混合后的体积云。
可选的,体积云的处理装置还包括:第四获取模块、第二调整模块、第五获取模块、第三调整模块、第六获取模块、第四调整模块以及生成模块。其中,第四获取模块,用于在获取待调整体积云之前,获取第一纹理贴图以及待调整体积云的初始厚度信息;第二调整模块,用于基于第一纹理贴图中的亮度信息对待调整体积云的初始厚度信息进行调整,得到待调整体积云的目标厚度;第五获取模块,用于获取第二纹理贴图以及待调整体积云的初始高度信息;第三调整模块,用于基于第二纹理贴图中的亮度信息对待调整体积云的初始高度信息进行调整,得到待调整体积云的目标高度;第六获取模块,用于获取第三纹理贴图以及待调整体积云的初始宽度信息,并将第三纹理贴图在第一方向上进行投射,得到投射结果;第四调整模块,用于基于投射结果对待调整体积云的初始宽度信息进行调整,得到待调整体积云的目标宽度;生成模块,用于基于目标厚度,和/或,目标高度,和/或,目标宽度生成待调整体积云。
可选的,体积云的处理装置还包括:第七获取模块、第八获取模块、第一计算模块以及第二计算模块。其中,第七获取模块,用于在获取待调整体积云之前,获取场景地形高度图;第八获取模块,用于从场景地形高度图中获取待调整体积云所在场景的场景地形高度;第一计算模块,用于计算场景地形高度与待调整体积云的目标高度的差值,得到高度差值;第二计算模块,用于计算高度差值与目标厚度的比值,并根据比值对待调整体积云的高度进行调整。
可选的,第七获取模块包括:第九获取模块、创建模块以及转换模块。其中,第九获取模块,用于获取场景地形高度图所对应的场景地形;创建模块,用于基于场景地形创建代理地形;转换模块,用于捕获代理地形的地形信息,将地形信息转换为高度贴图,得到场景地形高度图。
可选的,获取模块包括:第十获取模块、第五调整模块、第六调整模块以及渲染模块。其中,第十获取模块,用于获取预设模型所对应的体积贴图;第五调整模块,用于对体积贴图在水平方向上进行偏移,得到偏移后的体积贴图;第六调整模块,用于基于预设模型的三维遮罩空间对偏移后的体积贴图进行调整,得到调整后的体积贴图;渲染模块,用于基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云。
可选的,体积云的处理装置还包括:第六确定模块以及摆放模块。其中,第六确定模块,用于在基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云之后,调整偏移后的体积贴图的纹理空间和三维遮罩空间,确定待调整体积云的摆放位置;摆放模块,用于基于摆放位置对待调整体积云进行摆放。
可选的,体积云的处理装置还包括:第十一获取模块、第七调整模块、第八调整模块、第三计算模块以及处理模块。其中,第十一获取模块,用于在基于调整后的体积贴图对预设模型进行渲染,得到待调整体积云之后,获取待调整体积云对应的第一体积贴图;第七调整模块,用于对第一体积贴图进行时间偏移,得到偏移后的第一体积贴图;第八调整模块,用于对偏移后的第一体积贴图进行调整,得到第二体积贴图;第三计算模块,用于计算第二体积贴图的纹理空间与偏移后的体积贴图的纹理空间的乘积,得到扭曲后的纹理空间;处理模块,用于基于扭曲后的纹理空间对待调整体积云进行处理,得到目标体积云,其中,目标体积云为随时间动态变化的体积云。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例中的体积云的处理方法。
根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述实施例中的体积云的处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (14)

1.一种体积云的处理方法,其特征在于,包括:
获取待调整体积云;
根据所述待调整体积云的宽度信息确定所述待调整体积云在第一方向上的第一分区范围,并根据所述待调整体积云的高度信息确定所述待调整体积云在第二方向上的第二分区范围,其中,所述第一方向不同于所述第二方向;
基于所述第一分区范围以及所述第二分区范围对所述待调整体积云的形态进行分区调整,得到调整后的体积云。
2.根据权利要求1所述的方法,其特征在于,根据所述待调整体积云的宽度信息确定所述待调整体积云在第一方向上的第一分区范围,包括:
获取所述待调整体积云对应的第一遮罩贴图所对应的第一颜色通道的第一通道范围以及所述待调整体积云的宽度信息;
将所述待调整体积云竖直投射至所述第一遮罩贴图,得到投射结果;
根据所述第一通道范围以及所述投射结果确定所述待调整体积云在所述第一方向上的第一分区范围。
3.根据权利要求1所述的方法,其特征在于,根据所述待调整体积云的高度信息确定所述待调整体积云在第二方向上的第二分区范围,包括:
获取所述待调整体积云的高度信息;
根据所述高度信息确定所述待调整体积云在第二颜色通道中的第二通道范围;
根据所述第二通道范围确定所述待调整体积云在所述第二方向上的第二分区范围。
4.根据权利要求1所述的方法,其特征在于,基于所述第一分区范围以及所述第二分区范围对所述待调整体积云的形态进行分区调整,得到调整后的体积云,包括:
基于所述第一分区范围以及所述第二分区范围确定所述待调整体积云的至少一个调整区域;
从所述至少一个调整区域中确定目标调整区域;
对所述待调整体积云的目标调整区域进行形态调整,得到所述调整后的体积云。
5.根据权利要求1所述的方法,其特征在于,在基于所述第一分区范围以及所述第二分区范围对所述待调整体积云的形态进行分区调整,得到所述调整后的体积云之后,所述方法还包括:
获取多种类型的体积云;
对所述多种类型的体积云进行混合处理,得到混合后的体积云。
6.根据权利要求1所述的方法,其特征在于,在获取待调整体积云之前,所述方法还包括:
获取第一纹理贴图以及所述待调整体积云的初始厚度信息;
基于所述第一纹理贴图中的亮度信息对所述待调整体积云的初始厚度信息进行调整,得到所述待调整体积云的目标厚度;
获取第二纹理贴图以及所述待调整体积云的初始高度信息;
基于所述第二纹理贴图中的亮度信息对所述待调整体积云的初始高度信息进行调整,得到所述待调整体积云的目标高度;
获取第三纹理贴图以及所述待调整体积云的初始宽度信息,并将所述第三纹理贴图在所述第一方向上进行投射,得到投射结果;
基于所述投射结果对所述待调整体积云的初始宽度信息进行调整,得到所述待调整体积云的目标宽度;
基于所述目标厚度,和/或,所述目标高度,和/或,所述目标宽度生成所述待调整体积云。
7.根据权利要求6所述的方法,其特征在于,在获取待调整体积云之前,所述方法还包括:
获取场景地形高度图;
从所述场景地形高度图中获取所述待调整体积云所在场景的场景地形高度;
计算所述场景地形高度与所述待调整体积云的目标高度的差值,得到高度差值;
计算所述高度差值与所述目标厚度的比值,并根据所述比值对所述待调整体积云的高度进行调整。
8.根据权利要求7所述的方法,其特征在于,获取场景地形高度图,包括:
获取所述场景地形高度图所对应的场景地形;
基于所述场景地形创建代理地形;
捕获所述代理地形的地形信息,将所述地形信息转换为高度贴图,得到所述场景地形高度图。
9.根据权利要求1所述的方法,其特征在于,获取待调整体积云,包括:
获取预设模型所对应的体积贴图;
对所述体积贴图在水平方向上进行偏移,得到偏移后的体积贴图;
基于所述预设模型的三维遮罩空间对所述偏移后的体积贴图进行调整,得到调整后的体积贴图;
基于所述调整后的体积贴图对所述预设模型进行渲染,得到所述待调整体积云。
10.根据权利要求9所述的方法,其特征在于,在基于所述调整后的体积贴图对所述预设模型进行渲染,得到所述待调整体积云之后,所述方法还包括:
调整所述偏移后的体积贴图的纹理空间和所述三维遮罩空间,确定所述待调整体积云的摆放位置;
基于所述摆放位置对所述待调整体积云进行摆放。
11.根据权利要求9所述的方法,其特征在于,在基于所述调整后的体积贴图对所述预设模型进行渲染,得到所述待调整体积云之后,所述方法还包括:
获取所述待调整体积云对应的第一体积贴图;
对所述第一体积贴图进行时间偏移,得到偏移后的第一体积贴图;
对所述偏移后的第一体积贴图进行调整,得到第二体积贴图;
计算所述第二体积贴图的纹理空间与所述偏移后的体积贴图的纹理空间的乘积,得到扭曲后的纹理空间;
基于所述扭曲后的纹理空间对所述待调整体积云进行处理,得到目标体积云,其中,所述目标体积云为随时间动态变化的体积云。
12.一种体积云的处理装置,其特征在于,包括:
获取模块,用于获取待调整体积云;
确定模块,用于根据所述待调整体积云的宽度信息确定所述待调整体积云在第一方向上的第一分区范围,并根据所述待调整体积云的高度信息确定所述待调整体积云在第二方向上的第二分区范围,其中,所述第一方向不同于所述第二方向;
调整模块,用于基于所述第一分区范围以及所述第二分区范围对所述待调整体积云的形态进行分区调整,得到调整后的体积云。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至11任一项中所述的体积云的处理方法。
14.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现用于运行程序,其中,所述程序被设置为运行时执行所述权利要求1至11任一项中所述的体积云的处理方法。
CN202111648246.6A 2021-12-29 2021-12-29 体积云的处理方法、装置和电子设备 Pending CN114419215A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111648246.6A CN114419215A (zh) 2021-12-29 2021-12-29 体积云的处理方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111648246.6A CN114419215A (zh) 2021-12-29 2021-12-29 体积云的处理方法、装置和电子设备

Publications (1)

Publication Number Publication Date
CN114419215A true CN114419215A (zh) 2022-04-29

Family

ID=81269564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111648246.6A Pending CN114419215A (zh) 2021-12-29 2021-12-29 体积云的处理方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN114419215A (zh)

Similar Documents

Publication Publication Date Title
US7710418B2 (en) Systems and methods for the real-time and realistic simulation of natural atmospheric lighting phenomenon
CN111968216B (zh) 一种体积云阴影渲染方法、装置、电子设备及存储介质
CN111968215B (zh) 一种体积光渲染方法、装置、电子设备及存储介质
CN107341853B (zh) 超大虚拟场景和动态摄屏的虚实融合方法及系统
JP5531093B2 (ja) コンピュータグラフィックスでオブジェクトにシャドウを付ける方法
CN115049811B (zh) 一种数字孪生虚拟三维场景的编辑方法、系统及存储介质
CN111508052A (zh) 三维网格体的渲染方法和装置
CN108257204B (zh) 运用于Unity引擎的顶点色绘制烘焙方法及系统
CN110115841B (zh) 一种游戏场景中植被对象的渲染方法和装置
US9183654B2 (en) Live editing and integrated control of image-based lighting of 3D models
CN112734896B (zh) 环境遮蔽渲染方法、装置、存储介质及电子设备
Kolivand et al. Realistic real-time outdoor rendering in augmented reality
CN112274934B (zh) 模型渲染方法、装置、设备及存储介质
Kolivand et al. Covering photo-realistic properties of outdoor components with the effects of sky color in mixed reality
CN115526976A (zh) 虚拟场景渲染方法、装置、存储介质和电子设备
US7133052B1 (en) Morph map based simulated real-time rendering
CN118397160A (zh) 一种用于油田站场逆向建站系统的自主化三维渲染引擎
CN117011492B (zh) 图像渲染方法、装置、电子设备及存储介质
CN105976423A (zh) 一种镜头光晕的生成方法和装置
CN115409962B (zh) 虚幻引擎内构建坐标系统的方法、电子设备和存储介质
CN114419215A (zh) 体积云的处理方法、装置和电子设备
CN115409958A (zh) 基于虚幻引擎的平面构建方法、电子设备和存储介质
CN111462343B (zh) 数据处理方法、装置、电子设备及存储介质
CN115035231A (zh) 阴影烘焙方法、装置、电子设备和存储介质
JPH0721408A (ja) コンピュータグラフィックスの照度計算方法及び表示装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination