CN108074285B - 体积云模拟方法和体积云模拟装置 - Google Patents
体积云模拟方法和体积云模拟装置 Download PDFInfo
- Publication number
- CN108074285B CN108074285B CN201711279560.5A CN201711279560A CN108074285B CN 108074285 B CN108074285 B CN 108074285B CN 201711279560 A CN201711279560 A CN 201711279560A CN 108074285 B CN108074285 B CN 108074285B
- Authority
- CN
- China
- Prior art keywords
- vertex
- model
- sub
- interpolation
- color
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/61—Scene description
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本发明提供的体积云模拟方法和体积云模拟装置,涉及场景模拟技术领域。其中,体积云模拟方法包括:构造体积云模型,其中,所述体积云模型包括相对设置的两个子模型;针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。通过上述方法,可以改善现有体积云模拟技术中存在的模拟计算复杂的问题。
Description
技术领域
本发明涉及场景模拟技术领域,具体而言,涉及一种体积云模拟方法和体积云模拟装置。
背景技术
在如今的三维游戏中,玩家不仅仅局限于陆地上的活动。其中,在空中进行飞翔属于比较常见的场景。为了保证飞翔过程中玩家所处的自然环境更为真实,一般会对模拟出脚下有体积云的场景。因此,体积云的模拟效果直接关系着三维游戏的逼真程度,影响着用户的体验度。经发明人研究发现,现有体积云模拟技术中存在的计算复杂的问题。
发明内容
有鉴于此,本发明的目的在于提供一种体积云模拟方法和体积云模拟装置,以改善现有体积云模拟技术中存在的计算复杂的问题。
为实现上述目的,本发明实施例采用如下技术方案:
一种体积云模拟方法,包括:
构造体积云模型,其中,所述体积云模型包括相对设置的两个子模型;
针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。
在本发明实施例较佳的选择中,在上述体积云模拟方法中,每一个子模型由多个三角形构成,其中,任意一个三角形由三个顶点构成,按照预设规则对该子模型进行渲染的步骤包括:
通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理;
通过光栅器对经过转换处理的参数信息进行插值处理;
通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度;
根据所述颜色透明度对该子模型的颜色进行调整,以完成对该子模型的渲染。
在本发明实施例较佳的选择中,在上述体积云模拟方法中,每一个顶点的参数信息包括顶点坐标,通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理的步骤包括:
针对该子模型的每一个顶点,将该顶点的顶点坐标依次通过世界转换矩阵、视见转换矩阵和投影转换矩阵进行转换,以得到该顶点的裁剪坐标;
根据该顶点的顶点坐标通过世界转换矩阵得到的世界坐标和预设的雾效参数进行计算,以得到该顶点的雾效因子。
在本发明实施例较佳的选择中,在上述体积云模拟方法中,每一个顶点的参数信息还包括顶点颜色和纹理坐标,在按照预设规则对该子模型进行渲染的步骤之前,所述方法还包括:
针对每一个子模型,为该子模型的各顶点分别贴合对应的纹理坐标;
通过光栅器对经过转换处理的参数信息进行插值处理的步骤包括:
针对该子模型的每一个顶点,分别对该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标进行插值处理,以得到该顶点的插值裁剪坐标、插值雾效因子、插值顶点颜色和插值纹理坐标。
在本发明实施例较佳的选择中,在上述体积云模拟方法中,通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度的步骤包括:
针对该子模型的每一个顶点,对该顶点的插值纹理坐标进行偏移和缩放处理,以得到该顶点的新纹理坐标;
根据所述新纹理坐标、预设的云层颜色值和雾颜色值对该顶点的颜色值进行计算,以得到该顶点的最终颜色值;
根据所述插值裁剪坐标进行计算,以得到该顶点的深度差;
根据所述插值顶点颜色、深度差、最终颜色值、预设的柔边值及预设的云海可见度进行计算,以得到该顶点的透明度。
本发明实施例还提供了一种体积云模拟装置,包括:
模型构造模块,用于构造体积云模型,其中,所述体积云模型包括相对设置的两个子模型;
模型渲染模块,用于针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。
在本发明实施例较佳的选择中,在上述体积云模拟装置中,每一个子模型由多个三角形构成,其中,任意一个三角形由三个顶点构成,所述模型渲染模块包括:
信息转换子模块,用于通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理;
信息插值子模块,用于通过光栅器对经过转换处理的参数信息进行插值处理;
透明度计算子模块,用于通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度;
模型渲染子模块,用于根据所述颜色透明度对该子模型的颜色进行调整,以完成对该子模型的渲染。
在本发明实施例较佳的选择中,在上述体积云模拟装置中,每一个顶点的参数信息包括顶点坐标,所述信息转换子模块包括:
矩阵转换单元,用于针对该子模型的每一个顶点,将该顶点的顶点坐标依次通过世界转换矩阵、视见转换矩阵和投影转换矩阵进行转换,以得到该顶点的裁剪坐标;
雾效计算单元,用于根据该顶点的顶点坐标通过世界转换矩阵得到的世界坐标和预设的雾效参数进行计算,以得到该顶点的雾效因子。
在本发明实施例较佳的选择中,在上述体积云模拟装置中,每一个顶点的参数信息还包括顶点颜色和纹理坐标,所述体积云模拟装置还包括:
纹理坐标贴合模块,用于针对每一个子模型,为该子模型的各顶点分别贴合对应的纹理坐标;
所述信息插值子模块包括:
信息插值单元,用于针对该子模型的每一个顶点,分别对该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标进行插值处理,以得到该顶点的插值裁剪坐标、插值雾效因子、插值顶点颜色和插值纹理坐标。
在本发明实施例较佳的选择中,在上述体积云模拟装置中,所述透明度计算子模块包括:
纹理坐标获取单元,用于针对该子模型的每一个顶点,对该顶点的插值纹理坐标进行偏移和缩放处理,以得到该顶点的新纹理坐标;
颜色值获取单元,用于根据所述新纹理坐标、预设的云层颜色值和雾颜色值对该顶点的颜色值进行计算,以得到该顶点的最终颜色值;
深度差获取单元,用于根据所述插值裁剪坐标进行计算,以得到该顶点的深度差;
透明度获取单元,用于根据所述插值顶点颜色、深度差、最终颜色值、预设的柔边值及预设的云海可见度进行计算,以得到该顶点的透明度。
本发明提供的体积云模拟方法和体积云模拟装置,通过采用相对设置的两个子模型,可以实现分别对两个子模型进行渲染处理,从而避免对体积云的整体模型进行模拟计算而造成逻辑复杂、计算量过大的问题,进而改善现有体积云模拟技术中存在的计算复杂的问题,并且通过两个相对设置的子模型模拟体积云,在视点位于两个子模型之间时还能产生头顶和脚下均有云雾的效果,极大地提高了体积云模拟方法和体积云模拟装置的实用性和可靠性。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
图1为本发明实施例提供的终端设备的结构框图。
图2为本发明实施例提供的体积云模拟方法的流程示意图。
图3为图2中步骤S150的流程示意图。
图4为图3中步骤S151的流程示意图。
图5为图3中步骤S155的流程示意图。
图6为本发明实施例提供的体积云模拟装置的结构框图。
图7为本发明实施例提供的模型渲染模块的结构框图。
图8为本发明实施例提供的信息转换子模块的结构框图。
图9为本发明实施例提供的透明度计算子模块的结构框图。
图标:10-终端设备;12-存储器;14-处理器;100-体积云模拟装置;110-模型构造模块;130-纹理坐标贴合模块;150-模型渲染模块;151-信息转换子模块;151a-矩阵转换单元;151b-雾效计算单元;153-信息插值子模块;155-透明度计算子模块;155a-纹理坐标获取单元;155b-颜色值获取单元;155c-深度差获取单元;155d-透明度获取单元;157-模型渲染子模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
如图1所示,本发明实施例提供了一种终端设备10,包括存储器12、处理器14和体积云模拟装置100。
其中,所述终端设备10可以包括,但不限于是智能手机、个人电脑(personalcomputer,PC)、平板电脑、个人数字助理(personal digital assistant,PDA)、移动上网设备(mobile Internet device,MID)等。在本实施例中,所述终端设备10优选为可移动终端设备,例如手机。通过所述体积云模拟装置100,可以解决现有体积云模拟技术中由于计算量大而导致可移动终端设备耗电量大的问题,进而降低可移动终端设备的有效使用时间。
进一步地,在本实施实例中,所述存储器12和处理器14之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述体积云模拟装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器12中的软件功能模块。所述处理器14用于执行所述存储器12中存储的可执行模块,例如所述体积云模拟装置100所包括的软件功能模块及计算机程序等,以实现体积云模拟方法。
其中,所述存储器12可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器12用于存储程序,所述处理器14在接收到执行指令后,执行所述程序。
所述处理器14可能是一种集成电路芯片,具有信号的处理能力。上述的处理器14可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可以理解,图1所示的结构仅为示意,所述终端设备10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置,例如,还可以包括用于与服务器进行数据交互的通信单元。图1中所示的各组件可以采用硬件、软件或其组合实现.
结合图2,本发明实施例还提供一种可应用于上述终端设备10的体积云模拟方法,所述方法有关的流程所定义的方法步骤可以由所述处理器14实现。下面将对图2所示的具体流程进行详细阐述。
步骤S110,构造体积云模型。
在本实施例中,所述体积云模型包括相对设置的两个子模型。其中,各所述子模型的形状大小不受限制,可以根据实际需求进行设置,例如,可以根据应用中的环境需求或时间信息进行设置。
步骤S130,针对每一个子模型,为该子模型的各顶点分别贴合对应的纹理坐标。
在本实施例中,通过步骤S110可以构造出体积云的形体架构,为保证模拟出的体积云显示效果更具有真实性,可以在两个子模型的各顶点分别贴合对应的纹理坐标,以便于根据该纹理坐标和预设的云块纹理图对该顶点进行颜色的调整。其中,每一个子模型由多个三角形构成,任意一个三角形由三个顶点构成。
步骤S150,针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。
可选地,按照预设规则对子模型进行渲染的方式不受限制,可以根据实际应用中对渲染的效果进行设置,例如,是否需要模拟出的体积云可以飘动或颜色进行变化。考虑到每一个子模型可以由多个三角形构成,其中,任意一个三角形由三个顶点构成,因此,在本实施例中,结合图3,可以通过步骤S151、步骤S153、步骤S155和步骤S157,对子模型进行渲染处理。
步骤S151,通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理。
在本实施例中,可以将子模型的各个顶点的参数信息输入图形处理器的顶点着色器中,以对个顶点的参数信息进行转换处理。其中,转换处理的方式可以根据顶点的参数信息的具体内容进行设置。考虑到每一个顶点的参数信息包括顶点坐标,在本实施例中,结合图4,步骤S151可以包括步骤S151a和步骤S151b。
步骤S151a,针对该子模型的每一个顶点,将该顶点的顶点坐标依次通过世界转换矩阵、视见转换矩阵和投影转换矩阵进行转换,以得到该顶点的裁剪坐标。
在本实施例中,针对每一个顶点,该顶点的顶点坐标属于构造的体积云模型所在的模型空间,通过世界转换矩阵可以将该顶点的顶点坐标转换至世界空间以得到世界坐标posInWord(x,y,z),通过视见转换矩将得到的世界坐标转换至相机空间以得到视见坐标,并通过投影转换矩阵将得到的视见坐标转换至裁剪空间以得到裁剪坐标clipsPos(x,y,z)。
步骤S151b,根据该顶点的顶点坐标通过世界转换矩阵得到的世界坐标和预设的雾效参数进行计算,以得到该顶点的雾效因子。
在本实施例中,将步骤S151a得到的世界坐标posInWord(x,y,z)与预设的雾效参数进行计算得到雾效因子fogFactor。其中,所述预设的雾效参数既可以是预设存储的,也可以是实时输入的,根据实际需求进行设置即可。
步骤S153,通过光栅器对经过转换处理的参数信息进行插值处理。
在本实施例中,为便于片元着色器计算子模型的颜色透明度,可以通过光栅器对参数信息进行插值处理。其中,考虑到每一个顶点的参数信息还包括顶点颜色和贴合设置的纹理坐标。步骤S153,可以包括以下步骤:针对该子模型的每一个顶点,分别对该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标进行插值处理,以得到该顶点的插值裁剪坐标、插值雾效因子、插值顶点颜色和插值纹理坐标。
可选地,所述顶点颜色和纹理坐标既可以是通过顶点着色器输入所述光栅器,也可以是直接输入所述着色器,根据实际需求进行设置即可。在本实施例中,所述顶点颜色和纹理坐标与所述顶点坐标输入顶点着色器,并与得到的雾效因子和裁剪坐标保存至图形处理器的寄存器中,光栅器可以通过寄存器获取该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标,以进行插值处理,并将得到的该顶点的插值裁剪坐标clipsPos2(x,y,z)、插值雾效因子fogFactor2、插值顶点颜色color2(r,g,b,a)和插值纹理坐标uv输入至片元着色器中。
步骤S155,通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度。
在本实施例中,可以根据模拟的体积云的效果不同,片元着色器计算得到子模型的颜色透明度可以有不同的选择。在本实施例中,结合图5,可以通过步骤S155a、步骤S155b、步骤S155c和步骤S155d进行计算处理。
步骤S155a,针对该子模型的每一个顶点,对该顶点的插值纹理坐标进行偏移和缩放处理,以得到该顶点的新纹理坐标。
在本实施例中,考虑到需要模拟出体积云滚动的效果,因此,可以通过将顶点的插值纹理坐标uv进行偏移和缩放处理。其中,实现偏移和缩放的公式可以是:
uv=uv+frac(Time*float2(UVSpeed.x,UVSpeed.y);
uv=uv*UVTilling。
其中,Time是外部传入的时间,UVSpeed(x,y)是预设的或实时输入的UV两个方向上的滚动速度,UVTilling是预设的或实时输入的UV坐标的缩放倍数。
步骤S155b,根据所述新纹理坐标、预设的云层颜色值和雾颜色值对该顶点的颜色值进行计算,以得到该顶点的最终颜色值。
在本实施例中,可以根据所述新纹理坐标进行颜色采样处理,并将采样得到的颜色值与预设的云层颜色值进行相乘处理,并对相乘处理得到的结果与预设的雾颜色值进行插值处理,以得到该顶点的最终颜色值f'ragColor(r,g,b,a)。其中,预设的云层颜色值和雾颜色值,既可以是存储的,也可以是实时输入的,根据实际需求进行设置即可。
步骤S155c,根据所述插值裁剪坐标进行计算,以得到该顶点的深度差。
在本实施例中,可以将所述插值裁剪坐标clipsPos2(x,y,z)与预设的投影转换矩阵的逆矩阵相乘,以获取该顶点在相机空间的深度,并通过对该深度进行采样处理,以得到该顶点的固有深度。通过将该顶点的相机空间深度与固有深度进行差值计算,以得到该定点的深度差DepthDiff。具体的计算公式如下:
float2screenTC=clipPos2.xy/clipPos2.w;
screenTC.x=(screenTC.x+1.0)*0.5+ViewParam.z;
screenTC.y=(1.0-screenTC.y)*0.5+ViewParam.w;
float4tempPos=float4(screenTC.xy,0.0,1.0);
tempPos.z=tex2D(S_Depth,screenTC).r;
tempPos.x=tempPos.x*2.0-1.0;
tempPos.y=(1.0-tempPos.y)*2.0-1.0;
float4viewSpacePos=dot(InvProjectMatrix,tempPos);
float depth=viewSpacePos.z/viewSpacePos.w;
float4viewSpacePos2=dot(InvProjetMatrix,clipPos2);
float depth2=viewSpacePos2.z/viewSpacePos2.w;
float DepthDiff=depth2-depth。
步骤S155d,根据所述插值顶点颜色、深度差、最终颜色值、预设的柔边值及预设的云海可见度进行计算,以得到该顶点的透明度。
在本实施例中,可以将所述插值顶点颜色color2(r,g,b,a)、深度差DepthDiff、最终颜色值f'ragColor(r,g,b,a)、预设的柔边值BorderSoft及预设的云海可见度Opacity按照预设的计算公式进行计算,以得到该顶点的透明度alpha。其中,预设的计算公式可以是:
float alpha=saturate(DepthDiff/BorderSoft);
alpha=alpha*fragColor.a*Opacity*color2.g;
fragColor.a=alpha。
步骤S157,根据所述颜色透明度对该子模型的颜色进行调整,以完成对该子模型的渲染。
在本实施例中,通过步骤S155d可以得到各个顶点的透明度,进而得各顶点所在子模型的颜色透明度。将该子模型通过对应的颜色透明度渲染至屏幕,可以实现体积云的模拟。
结合图6,本发明实施例还提供一种可应用于上述终端设备10的体积云模拟装置100。其中,所述体积云模拟装置100包括模型构造模块110、纹理坐标贴合模块130和模型渲染模块150。
所述模型构造模块110,用于构造体积云模型,其中,所述体积云模型包括相对设置的两个子模型。在本实施例中,所述模型构造模块110可用于执行图2所示的步骤S110,关于所述模型构造模块110的具体描述可以参照前文对步骤S110的描述。
所述纹理坐标贴合模块130,用于针对每一个子模型,为该子模型的各顶点分别贴合对应的纹理坐标。在本实施例中,所述纹理图贴合模块130可用于执行图2所示的步骤S130,关于所述纹理图贴合模块130的具体描述可以参照前文对步骤S130的描述。
所述模型渲染模块150,用于针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。在本实施例中,所述模型渲染模块150可用于执行图2所示的步骤S150,关于所述模型渲染模块150的具体描述可以参照前文对步骤S150的描述。
进一步地,在本实施例中,结合图7,所述模型渲染模块150可以包括信息转换子模块151、信息插值子模块153、透明度计算子模块155和模型渲染子模块157。其中,每一个子模型由多个三角形构成,其中,任意一个三角形由三个顶点构成。
所述信息转换子模块151,用于通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理。在本实施例中,所述信息转换子模块151可用于执行图3所示的步骤S151,关于所述信息转换子模块151的具体描述可以参照前文对步骤S151的描述。
所述信息插值子模块153,用于通过光栅器对经过转换处理的参数信息进行插值处理。在本实施例中,所述信息插值子模块153可用于执行图3所示的步骤S153,关于所述信息插值子模块153的具体描述可以参照前文对步骤S153的描述。
所述透明度计算子模块155,用于通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度。在本实施例中,所述透明度计算子模块155可用于执行图3所示的步骤S155,关于所述透明度计算子模块155的具体描述可以参照前文对步骤S155的描述。
所述模型渲染子模块157,用于根据所述颜色透明度对该子模型进行渲染。在本实施例中,所述模型渲染子模块157可用于执行图3所示的步骤S157,关于所述模型渲染子模块157的具体描述可以参照前文对步骤S157的描述。
结合图8,在本实施例中,每一个顶点的参数信息包括顶点坐标,所述信息转换子模块151包括矩阵转换单元151a和雾效计算单元151b。
所述矩阵转换单元151a,用于针对该子模型的每一个顶点,将该顶点的顶点坐标依次通过世界转换矩阵、视见转换矩阵和投影转换矩阵进行转换,以得到该顶点的裁剪坐标。在本实施例中,所述矩阵转换单元151a可用于执行图4所示的步骤S151a,关于所述矩阵转换单元151a的具体描述可以参照前文对步骤S151a的描述。
所述雾效计算单元151b,用于根据该顶点的顶点坐标通过世界转换矩阵得到的世界坐标和预设的雾效参数进行计算,以得到该顶点的雾效因子。在本实施例中,所述雾效计算单元151b可用于执行图4所示的步骤S151b,关于所述雾效计算单元151b的具体描述可以参照前文对步骤S151b的描述。
进一步地,在本实施例中,每一个顶点的参数信息还可以包括顶点颜色和纹理坐标,所述信息插值子模块153可以包括信息插值单元。其中,所述信息插值单元,用于针对该子模型的每一个顶点,分别对该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标进行插值处理,以得到该顶点的插值裁剪坐标、插值雾效因子、插值顶点颜色和插值纹理坐标。
结合图9,在本实施例中,所述透明度计算子模块155可以包括纹理坐标获取单元155a、颜色值获取单元155b、深度差获取单元155c和透明度获取单元155d。
所述纹理坐标获取单元155a,用于针对该子模型的每一个顶点,对该顶点的插值纹理坐标进行偏移和缩放处理,以得到该顶点的新纹理坐标。在本实施例中,所述纹理坐标获取单元155a可用于执行图5所示的步骤S155a,关于所述纹理坐标获取单元155a的具体描述可以参照前文对步骤S155a的描述。
所述颜色值获取单元155b,用于根据所述新纹理坐标、预设的云层颜色值和雾颜色值对该顶点的颜色值进行计算,以得到该顶点的最终颜色值。在本实施例中,所述颜色值获取单元155b可用于执行图5所示的步骤S155b,关于所述颜色值获取单元155b的具体描述可以参照前文对步骤S155b的描述。
所述深度差获取单元155c,用于根据所述插值裁剪坐标进行计算,以得到该顶点的深度差。在本实施例中,所述深度差获取单元155c可用于执行图5所示的步骤S155c,关于所述深度差获取单元155c的具体描述可以参照前文对步骤S155c的描述。
所述透明度获取单元155d,用于根据所述插值顶点颜色、深度差、最终颜色值、预设的柔边值及预设的云海可见度进行计算,以得到该顶点的透明度。在本实施例中,所述透明度获取单元155d可用于执行图5所示的步骤S155d,关于所述透明度获取单元155d的具体描述可以参照前文对步骤S155d的描述。
综上所述,本发明提供的一种体积云模拟方法和体积云模拟装置100,通过采用相对设置的两个子模型,可以实现分别对两个子模型进行渲染处理,从而避免对体积云的整体模型进行模拟计算而造成逻辑复杂、计算量过大的问题,进而改善现有体积云模拟技术中存在的计算复杂的问题,并且通过两个相对设置的子模型模拟体积云,在视点位于两个子模型之间时还能产生头顶和脚下均有云雾的效果,极大地提高了体积云模拟方法和体积云模拟装置100的实用性和可靠性。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种体积云模拟方法,其特征在于,所述方法包括:
构造体积云模型,其中,所述体积云模型包括相对设置的两个子模型,该相对设置的方式为头顶和脚下;
针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。
2.根据权利要求1所述的体积云模拟方法,其特征在于,每一个子模型由多个三角形构成,其中,任意一个三角形由三个顶点构成,按照预设规则对该子模型进行渲染的步骤包括:
通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理;
通过光栅器对经过转换处理的参数信息进行插值处理;
通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度;
根据所述颜色透明度对该子模型的颜色进行调整,以完成对该子模型的渲染。
3.根据权利要求2所述的体积云模拟方法,其特征在于,每一个顶点的参数信息包括顶点坐标,通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理的步骤包括:
针对该子模型的每一个顶点,将该顶点的顶点坐标依次通过世界转换矩阵、视见转换矩阵和投影转换矩阵进行转换,以得到该顶点的裁剪坐标;
根据该顶点的顶点坐标通过世界转换矩阵得到的世界坐标和预设的雾效参数进行计算,以得到该顶点的雾效因子。
4.根据权利要求3所述的体积云模拟方法,其特征在于,每一个顶点的参数信息还包括顶点颜色和纹理坐标,在按照预设规则对该子模型进行渲染的步骤之前,所述方法还包括:
针对每一个子模型,为该子模型的各顶点分别贴合对应的纹理坐标;
通过光栅器对经过转换处理的参数信息进行插值处理的步骤包括:
针对该子模型的每一个顶点,分别对该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标进行插值处理,以得到该顶点的插值裁剪坐标、插值雾效因子、插值顶点颜色和插值纹理坐标。
5.根据权利要求4所述的体积云模拟方法,其特征在于,通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度的步骤包括:
针对该子模型的每一个顶点,对该顶点的插值纹理坐标进行偏移和缩放处理,以得到该顶点的新纹理坐标;
根据所述新纹理坐标、预设的云层颜色值和雾颜色值对该顶点的颜色值进行计算,以得到该顶点的最终颜色值;
根据所述插值裁剪坐标进行计算,以得到该顶点的深度差;
根据所述插值顶点颜色、深度差、最终颜色值、预设的柔边值及预设的云海可见度进行计算,以得到该顶点的透明度。
6.一种体积云模拟装置,其特征在于,所述装置包括:
模型构造模块,用于构造体积云模型,其中,所述体积云模型包括相对设置的两个子模型,该相对设置的方式为头顶和脚下;
模型渲染模块,用于针对每一个子模型,按照预设规则对该子模型进行渲染,以完成体积云的模拟。
7.根据权利要求6所述的体积云模拟装置,其特征在于,每一个子模型由多个三角形构成,其中,任意一个三角形由三个顶点构成,所述模型渲染模块包括:
信息转换子模块,用于通过顶点着色器对该子模型的各个顶点的参数信息进行转换处理;
信息插值子模块,用于通过光栅器对经过转换处理的参数信息进行插值处理;
透明度计算子模块,用于通过片元着色器根据经过插值处理的参数信息计算该子模型的颜色透明度;
模型渲染子模块,用于根据所述颜色透明度对该子模型的颜色进行调整,以完成对该子模型的渲染。
8.根据权利要求7所述的体积云模拟装置,其特征在于,每一个顶点的参数信息包括顶点坐标,所述信息转换子模块包括:
矩阵转换单元,用于针对该子模型的每一个顶点,将该顶点的顶点坐标依次通过世界转换矩阵、视见转换矩阵和投影转换矩阵进行转换,以得到该顶点的裁剪坐标;
雾效计算单元,用于根据该顶点的顶点坐标通过世界转换矩阵得到的世界坐标和预设的雾效参数进行计算,以得到该顶点的雾效因子。
9.根据权利要求8所述的体积云模拟装置,其特征在于,每一个顶点的参数信息还包括顶点颜色和纹理坐标,所述体积云模拟装置还包括:
纹理坐标贴合模块,用于针对每一个子模型,为该子模型的各顶点分别贴合对应的纹理坐标;
所述信息插值子模块包括:
信息插值单元,用于针对该子模型的每一个顶点,分别对该顶点的裁剪坐标、雾效因子、顶点颜色和纹理坐标进行插值处理,以得到该顶点的插值裁剪坐标、插值雾效因子、插值顶点颜色和插值纹理坐标。
10.根据权利要求9所述的体积云模拟装置,其特征在于,所述透明度计算子模块包括:
纹理坐标获取单元,用于针对该子模型的每一个顶点,对该顶点的插值纹理坐标进行偏移和缩放处理,以得到该顶点的新纹理坐标;
颜色值获取单元,用于根据所述新纹理坐标、预设的云层颜色值和雾颜色值对该顶点的颜色值进行计算,以得到该顶点的最终颜色值;
深度差获取单元,用于根据所述插值裁剪坐标进行计算,以得到该顶点的深度差;
透明度获取单元,用于根据所述插值顶点颜色、深度差、最终颜色值、预设的柔边值及预设的云海可见度进行计算,以得到该顶点的透明度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711279560.5A CN108074285B (zh) | 2017-12-06 | 2017-12-06 | 体积云模拟方法和体积云模拟装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711279560.5A CN108074285B (zh) | 2017-12-06 | 2017-12-06 | 体积云模拟方法和体积云模拟装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108074285A CN108074285A (zh) | 2018-05-25 |
CN108074285B true CN108074285B (zh) | 2021-03-09 |
Family
ID=62158068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711279560.5A Active CN108074285B (zh) | 2017-12-06 | 2017-12-06 | 体积云模拟方法和体积云模拟装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108074285B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109544674B (zh) * | 2018-11-21 | 2023-05-02 | 北京像素软件科技股份有限公司 | 一种体积光实现方法及装置 |
CN111145329B (zh) * | 2019-12-25 | 2024-03-22 | 北京像素软件科技股份有限公司 | 模型渲染方法、系统及电子装置 |
CN111968214B (zh) * | 2020-07-29 | 2024-04-19 | 完美世界(北京)软件科技发展有限公司 | 一种体积云渲染方法、装置、电子设备及存储介质 |
CN113313798B (zh) * | 2021-06-23 | 2022-05-03 | 完美世界(北京)软件科技发展有限公司 | 云图的制作方法及装置、存储介质、计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104143205A (zh) * | 2013-05-11 | 2014-11-12 | 哈尔滨点石仿真科技有限公司 | 大规模真实感体积云的实时渲染方法 |
CN105869106A (zh) * | 2016-04-27 | 2016-08-17 | 中国电子科技集团公司第二十八研究所 | 一种改进的三维实体云绘制方法 |
CN106570926A (zh) * | 2016-11-04 | 2017-04-19 | 北京大学(天津滨海)新代信息技术研究院 | 一种飞行视景仿真中高效的粒子云层绘制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582929B2 (en) * | 2013-06-04 | 2017-02-28 | Confetti Interactive Inc. | Dynamic skydome system |
-
2017
- 2017-12-06 CN CN201711279560.5A patent/CN108074285B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104143205A (zh) * | 2013-05-11 | 2014-11-12 | 哈尔滨点石仿真科技有限公司 | 大规模真实感体积云的实时渲染方法 |
CN105869106A (zh) * | 2016-04-27 | 2016-08-17 | 中国电子科技集团公司第二十八研究所 | 一种改进的三维实体云绘制方法 |
CN106570926A (zh) * | 2016-11-04 | 2017-04-19 | 北京大学(天津滨海)新代信息技术研究院 | 一种飞行视景仿真中高效的粒子云层绘制方法 |
Non-Patent Citations (1)
Title |
---|
《Real-Time Rendering of Volumetric Clouds》;Olajos Rikard;《LU-CS-EX》;20161011;摘要、正文第1-42页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108074285A (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108074285B (zh) | 体积云模拟方法和体积云模拟装置 | |
CN109377546B (zh) | 虚拟现实模型渲染方法及装置 | |
CN107358649B (zh) | 地形文件的处理方法和装置 | |
CN106898040B (zh) | 虚拟资源对象渲染方法和装置 | |
US9275493B2 (en) | Rendering vector maps in a geographic information system | |
US8368714B2 (en) | Curved surface rendering system and method | |
CN108022285B (zh) | 地图渲染方法及装置 | |
US9684997B2 (en) | Efficient rendering of volumetric elements | |
US11436800B2 (en) | Interactive system and method providing real-time virtual reality visualization of simulation data | |
Chao et al. | Parallel algorithm for viewshed analysis on a modern GPU | |
CN111583398B (zh) | 图像显示的方法、装置、电子设备及计算机可读存储介质 | |
CN109544674B (zh) | 一种体积光实现方法及装置 | |
KR101507776B1 (ko) | 3차원 지도의 외곽선 표현 방법 | |
CN108182723B (zh) | 星空模拟方法和星空模拟装置 | |
CN109697748A (zh) | 模型压缩处理方法、模型贴图处理方法装置、存储介质 | |
CN108031117B (zh) | 区域雾效实现方法及装置 | |
CN111127590B (zh) | 一种二阶贝塞尔曲线绘制方法及装置 | |
CN112580213A (zh) | 电场线的显示图像的生成方法和装置、存储介质 | |
CN109598672A (zh) | 一种地图道路渲染方法及装置 | |
KR20230167746A (ko) | 메시 정점 위치에 대한 반복 및 루트 찾기를 사용하여 표면에 근사하는 폴리곤 메시를 생성하기 위한 방법 및 시스템 | |
KR101919085B1 (ko) | 3차원 메쉬 데이터 간소화 방법 및 장치 | |
CN113827958B (zh) | 岩浆渲染方法、装置、设备和存储介质 | |
KR100848687B1 (ko) | 3차원 그래픽 처리 장치 및 그것의 동작 방법 | |
CN114119821A (zh) | 虚拟对象的毛发渲染方法、装置及设备 | |
CN114119923A (zh) | 三维人脸重建方法、装置以及电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |