三维模型渲染方法及装置与流程

文档序号:16435412发布日期:2018-12-28 20:27阅读:572来源:国知局
三维模型渲染方法及装置与流程

本发明涉及计算机图形技术领域,尤其涉及一种三维模型渲染方法及装置。

背景技术

随着计算机图形技术的发展,三维场景中可以向用户展示的三维模型越来越丰富。

目前,三维模型渲染过程包括:首先创建三维模型,然后利用shader(着色器)来制作具有一定材质效果的贴图,以将具有一定材质效果的贴图绘制在三维模型进行质感效果模拟,最终对完成效果模拟的三维模型进行渲染着色,并显示于三维场景,由此使得三维场景中显示的三维模型具有相应地风格。

由于用户对三维场景中三维模型所具有的风格要求越来越高,例如,风格可以是写实、卡通、手绘等等多元化风格,这往往使得开发人员需要开发多种不同的shader来制作不同材质效果的贴图,不仅不利于维护,导致较高的开发成本,而且可能造成用户设备较大的性能消耗。

由上可知,如何提高三维模型的渲染效率,以提升渲染性能仍亟待解决。



技术实现要素:

为了解决上述技术问题,本发明的一个目的在于提供一种三维模型渲染方法及装置。

其中,本发明所采用的技术方案为:

一种三维模型渲染方法,包括:获取三维模型数据和材质数据,所述三维模型数据用于描述为三维场景创建的三维模型,所述材质数据包括球形贴图和遮罩贴图;通过所述球形贴图对所述三维模型数据所描述的三维模型进行质感效果模拟;根据所述三维模型数据控制遮罩贴图对所述三维模型所模拟的质感效果进行遮挡处理;对完成效果模拟的三维模型进行渲染着色。

一种三维模型渲染装置,包括:数据获取模块,用于获取三维模型数据和材质数据,所述三维模型数据用于描述为三维场景创建的三维模型,所述材质数据包括球形贴图和遮罩贴图;光照模拟模块,用于通过所述球形贴图对所述三维模型数据所描述的三维模型进行质感效果模拟;遮挡处理模块,用于根据所述三维模型数据控制遮罩贴图对所述三维模型所模拟的质感效果进行遮挡处理;渲染着色模块,用于对完成效果模拟的三维模型进行渲染着色。

一种三维模型渲染装置,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的三维模型渲染方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的三维模型渲染方法。

在上述技术方案中,通过三维模型数据和材质数据的获取,并根据三维模型数据分别将材质数据中的球形贴图和遮罩贴图绘制在三维模型,以进行质感效果模拟和所模拟质感效果的遮挡处理,最终对完成效果模拟的三维模型进行渲染着色,也就是说,三维模型渲染过程中,利用基于球形贴图结合遮罩贴图的shader能够在三维模型上模拟出不同的质感效果,进而使得三维模型相应地具有不同的风格,避免开发人员开发多种不同的shader,不仅有利于维护,且对于用户设备而言内存和性能开销极小,提高了三维模型的渲染效率,以此解决了现有技术中渲染效率不高而导致渲染性能低下的问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。

图1是根据本发明所涉及的一种实施环境的示意图。

图2是根据本发明所涉及的另一种实施环境的示意图。

图3是根据一示例性实施例示出的一种用户设备的硬件结构框图。

图4是根据一示例性实施例示出的一种三维模型渲染方法的流程图。

图5是图4对应实施例中步骤330在一个实施例的流程图。

图6是图5对应实施例中步骤335在一个实施例的流程图。

图7是图4对应实施例中步骤350在一个实施例的流程图。

图8是根据一示例性实施例示出的另一种三维模型渲染方法的流程图。

图9是根据一示例性实施例示出的另一种三维模型渲染方法的流程图。

图10是一应用场景中三维模型渲染方法与现有技术的对比示意图。

图11是一应用场景中shader渲染管线的流程与现有技术的对比示意图。

图12是根据本发明所涉及的三维模型完成质感效果模拟的示意图。

图13是根据本发明所涉及的三维模型所模拟质感效果完成遮挡处理的示意图。

图14是根据本发明所涉及的三维模型的最终效果示意图。

图15是根据一示例性实施例示出的一种三维模型渲染装置的框图。

图16是图15对应实施例中光照模拟模块在一个实施例的框图。

图17是图16对应实施例中球形贴图绘制单元在一个实施例的框图。

图18是图15对应实施例中遮挡处理模块在一个实施例的框图。

图19是根据一示例性实施例示出的另一种三维模型渲染装置的框图。

图20是根据一示例性实施例示出的另一种三维模型渲染装置的框图。

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

如前所述,为了满足用户对三维场景中三维模型所具有的多元化风格的要求,开发人员往往需要开发多种不同的shader来制作不同材质效果的贴图。

利用shader制作贴图会进行大量的运算,包括:模型数据运算和效果模拟运算,其中,模型数据运算用于确定贴图绘制在三维模型的具体位置;效果模拟运算用于确定三维模型的质感效果。

上述过程中,由于计算量较大通常是离线实施的,不能够应用于实时性要求较高的三维场景中,尤其是渲染面积较大的三维场景,否则势必导致用户设备性能消耗过大。

由此,如果利用多种不同的shader来制作不同材质效果的贴图,在三维模型渲染过程中将需要进行更为庞大的运算量,则可能进一步地消耗用户设备性能,无法保证渲染效率。

为此,本发明特提出了一种三维模型渲染方法,以极低的性能开销和极小的内存增加量,使得三维模型能够具有不同的风格,不仅能够提高渲染效率,有效地提升渲染性能,而且具有较好的实时性和通用性,能够适用于实时性要求较高的三维场景,并支持多种用户设备,例如,用户设备可以是智能手机、平板电脑、台式电脑等等。

图1至图2为一种三维模型渲染方法所涉及的实施环境的示意图。

如图1所示,该实施环境包括用户设备100和服务器200。

其中,用户设备100可以是智能手机、平板电脑、台式电脑、笔记本电脑或者其它可供三维场景展示的客户端运行的终端等等。其中,客户端可以是应用程序客户端,还可以是网页客户端,相应地,三维场景可展示于程序窗口,也可以展示于网页页面,在此不进行限定。

服务器200为用户设备100提供用于描述为三维场景创建的三维模型的三维模型数据,以及包含球形贴图和遮罩贴图的材质数据。

通过用户设备100与服务器200的交互,对于用户设备100而言,随着客户端的运行,三维场景将相应地向用户呈现,并基于此三维场景进行三维模型的渲染与显示。

具体而言,将球形贴图和遮罩贴图绘制在三维模型,进行质感效果模拟和所模拟质感效果的遮挡处理,并对完成效果模拟的三维模型进行渲染着色。

由此,在三维场景中,例如游戏场景,即可显示出完成渲染着色的三维模型,以供用户控制此三维模型在游戏场景中执行对应动作。

在另一实施环境中,如图2所示,该实施环境包括用户设备100和用户,此时,三维模型数据和材质数据则由用户设备100自身所运行的客户端产生,以便于在用户设备100中根据三维模型数据和材质数据进行三维模型的渲染与显示。

请参阅图3,图3是根据一示例性实施例示出的一种用户设备的框图。

需要说明的是,该用户设备只是一个适配于本发明的示例,不能认为是提供了对本发明的使用范围的任何限制。该用户设备也不能解释为需要依赖于或者必须具有图3中示出的示例性的用户设备100中的一个或者多个组件。

如图3所示,用户设备100包括存储器101、存储控制器103、一个或多个(图3中仅示出一个)处理器105、外设接口107、射频模块109、定位模块111、摄像模块113、音频模块115、触控屏幕117以及按键模块119。这些组件通过一条或多条通讯总线/信号线121相互通讯。

其中,存储器101可用于存储计算机程序以及模块,如本发明示例性实施例中的三维模型渲染方法及装置对应的计算机可读指令及模块,处理器105通过运行存储在存储器101内的计算机可读指令,从而执行各种功能以及数据处理,即完成三维模型渲染方法。

存储器101作为资源存储的载体,可以是随机存储器、例如高速随机存储器、非易失性存储器,如一个或多个磁性存储装置、闪存、或者其它固态存储器。存储方式可以是短暂存储或者永久存储。

外设接口107可以包括至少一有线或无线网络接口、至少一串并联转换接口、至少一输入输出接口以及至少一usb接口等,用于将外部各种输入/输出装置耦合至存储器101以及处理器105,以实现与外部各种输入/输出装置的通信。

射频模块109用于收发电磁波,实现电磁波与电信号的相互转换,从而通过通讯网络与其他设备进行通讯。通信网络包括蜂窝式电话网、无线局域网或者城域网,上述通信网络可以使用各种通信标准、协议及技术。

定位模块111用于获取用户设备100的当前所在的地理位置。定位模块111的实例包括但不限于全球卫星定位系统(gps)、基于无线局域网或者移动通信网的定位技术。

摄像模块113隶属于摄像头,用于拍摄图片或者视频。拍摄的图片或者视频可以存储至存储器101内,还可以通过射频模块109发送至上位机。

音频模块115向用户提供音频接口,其可包括一个或多个麦克风接口、一个或多个扬声器接口以及一个或多个耳机接口。通过音频接口与其它设备进行音频数据的交互。音频数据可以存储至存储器101内,还可以通过射频模块109发送。

触控屏幕117在用户设备100与用户之间提供一个输入输出界面。具体地,用户可通过触控屏幕117进行输入操作,例如点击、触摸、滑动等手势操作,以使用户设备100对该输入操作进行响应。用户设备100则将文字、图片或者视频任意一种形式或者组合所形成的输出内容通过触控屏幕117向用户显示输出。

按键模块119包括至少一个按键,用以提供用户向用户设备100进行输入的接口,用户可以通过按下不同的按键使用户设备100执行不同的功能。例如,声音调节按键可供用户实现对用户设备100播放的声音音量的调节。

可以理解,图3所示的结构仅为示意,用户设备100还可包括比图3中所示更多或更少的组件,或者具有与图3所示不同的组件。图3中所示的各组件可以采用硬件、软件或者其组合来实现。

请参阅图4,在一示例性实施例中,一种三维模型渲染方法适用于图1或图2所示实施环境的用户设备,该用户设备的结构可以如图3所示。

该种三维模型渲染方法可以由用户设备执行,可以包括以下步骤:

步骤310,获取三维模型数据和材质数据。

其中,三维模型数据用于描述为三维场景创建的三维模型。

首先说明的是,三维场景,是由各种风格的三维模型构成的虚拟环境,例如,地图场景、游戏场景等等。相应地,三维模型即是构成此三维场景中的元素,并能够通过渲染而显示在三维场景中,包括但不限于建筑、动植物、人物等等。

为了在三维场景中显示三维模型,首先需要确定三维场景中存在具有哪种风格的哪些三维模型,那么对于此三维场景中存在的三维模型进行渲染时,才能够模拟出三维模型的质感效果,进而将完成效果模拟的三维模型显示于三维场景。

由此,在进行三维模型的渲染之前,需要获取三维模型数据和材质数据,通过三维模型数据对为三维场景创建的三维模型进行描述,并通过材质数据对所创建的三维模型所具有的风格加以描述,方便于后续按照三维模型所具有的风格对三维场景中三维模型的质感效果进行模拟。

进一步地,本实施例中,三维模型数据包括但不限于坐标数据、法线数据、纹理坐标数据、颜色数据等等。

其中,坐标数据用于表示三维模型在三维场景中的位置,法线数据用于表示三维模型在三维场景中的法线,纹理坐标数据用于表示绘制于三维模型的贴图的位置,颜色数据用于表示三维模型的颜色。

进一步地,本实施例中,材质数据包括球形贴图和遮罩贴图。

其中,球形贴图用于对三维模型进行质感效果模拟,应当理解,球形贴图不同,三维模型所模拟出的质感效果将有所区别。

遮罩贴图用于对三维模型所模拟出的质感效果进行遮挡处理,也就是说,三维模型并非整体都需要模拟出质感效果,那么,不需要模拟出质感效果的三维模型部位的质感效果则可通过遮罩贴图进行遮挡。

当然,在其他实施例中,材质数据还可以包括其他具有一定材质效果的贴图,例如,用于模拟光照明暗效果的卡通贴图、用于调节金属质感强弱的金属度贴图、用于模拟真实环境对三维模型影响的环境贴图等等,本实施例并非对此加以限定。

更进一步地,对于用户设备而言,三维模型数据可以通过与服务器交互获得的,还可以由用户设备自身所运行的客户端产生。

举例来说,在地图场景中,服务器中预先存储了各个地区的三维模型数据,此三维模型数据按照指定比例对存在于各个地区的各类型建筑和/或植被等实体进行描述。当用户设备请求服务器提供指定位置服务时,便可接收到服务器返回的与指定位置相关的三维模型数据,进而通过三维模型渲染而在用户设备中显示出与存在于指定位置的各类型建筑和/或植被等实体成指定比例的三维模型。

又譬如,随着用户设备中客户端的运行,游戏场景相应地呈现,此时,通过调用客户端所部署的游戏引擎即可得到为此游戏场景创建的三维模型所对应的三维模型数据和材质数据,进而根据三维模型数据和材质数据在此游戏场景中进行三维模型的渲染与显示。

步骤330,通过球形贴图对三维模型数据所描述的三维模型进行质感效果模拟。

三维模型的质感效果,指的是三维模型在光照条件下通过表面呈现、材料材质、几何尺寸向用户传递的视觉效果和/或触觉效果。

如前所述,利用shader制作贴图会进行大量的运算,其中即涉及到用于确定三维模型质感效果的效果模拟运算。因此,为了避免效果模拟运算,本实施例中,三维模型的质感效果是通过球形贴图模拟实现的。

具体地,根据三维模型数据将球形贴图绘制在三维模型,进行质感效果模拟。

也就是说,球形贴图实质上记录了三维模型在光照条件下通过表面呈现、材料材质、几何尺寸向用户传递的视觉效果和/或触觉效果。那么,在获得球形贴图之后,即可通过球形贴图对三维模型进行质感效果模拟,以将球形贴图所记录的三维模型向用户传递的视觉效果和/或触觉效果反映在三维模型上,使得此三维模型呈现出相应地质感效果。

进一步地,应当理解,三维模型具有的风格不同,则三维模型的质感效果也各不相同,为此,针对三维模型所实际具有的风格,球形贴图可以从存储海量球形贴图的存储空间中选取,还可以是开发人员调用第三方图形编辑应用程序绘制而成,在此不进行限定,只要球形贴图能够满足三维模型所实际具有的风格要求即可。换而言之,球形贴图反映了三维模型实际所需要的质感效果。

步骤350,根据三维模型数据控制遮罩贴图对三维模型所模拟的质感效果进行遮挡处理。

如前所述,三维模型的质感效果,指的是三维模型在光照条件下通过表面呈现、材料材质、几何尺寸向用户传递的视觉效果和/或触觉效果。

应当理解,对于三维模型不同部位而言,在同一光照条件下所接受的光照强度不可能完全相同,这势必使得三维模型不同部位的质感效果有所区别。换而言之,三维模型的有些部位需要质感效果,而有些部位则不需要质感效果。

基于此,遮挡处理,即是指通过遮罩贴图将三维模型不需要模拟出质感效果的部位的质感效果遮挡,而对于需要模拟出质感效果的三维模型的部位的质感效果则无作用,从而避免三维模型呈现单一的质感效果,以此增强三维模型的层次感、真实感。

步骤370,对完成效果模拟的三维模型进行渲染着色。

在三维模型完成效果模拟之后,即可对此三维模型进行渲染着色。

渲染着色,即是按照三维模型数据中的颜色数据对三维模型的颜色进行配置。

在一实施例的具体实现中,调用颜色控制器控制三维模型对应的颜色通道按照三维模型数据中的颜色数据执行颜色混合,以通过不同颜色通道所表示颜色的混合来提高三维模型渲染着色的灵活性和准确性,使得三维模型具有更良好的渲染效果。

其中,颜色通道包括表示红色的红色通道r、表示绿色的绿色通道g、以及表示蓝色的蓝色通道b。

通过如上所述的过程,通过球形贴图实现了三维模型的质感效果模拟,避免进行效果模拟运算,以此减小了运算量,且内存和性能开销技校,有效地提高了三维模型的渲染效率,有利于提升渲染性能。

此外,利用遮罩贴图结合球形贴图对三维模型所模拟质感效果的遮挡,使得三维模型具有更加丰富的质感效果,进一步地增强了三维模型的层次感、真实感,充分地保障了三维模型具有更良好的渲染效果。

请参阅图5,在一示例性实施例中,步骤330可以包括以下步骤:

步骤331,从三维模型数据中提取法线数据。

其中,法线数据用于表示三维模型在三维场景中的法线。

如前所述,球形贴图实质上记录了三维模型在光照条件下通过表面呈现、材料材质、几何尺寸向用户传递的视觉效果和/或触觉效果。也就是说,针对光照条件所指示的特定光照方向,只要三维模型在三维场景中的法线与特定光照方向之间的夹角不变,那么,通过球形贴图所模拟的三维模型的质感效果也不变,且与三维模型实际所需要的质感效果相符。

然而,三维场景中的三维模型实际上是会随着相机的频繁旋转而不断地转动,以使三维模型在三维场景中具有动画效果,这将使得三维模型在三维场景中的法线与特定光照方向之间的夹角发生变化,例如,随着三维模型的转动,三维模型的法线可能由指向特定光照方向转变为背向特定光照方向,此时,通过球形贴图所模拟的三维模型的质感效果将随着三维模型法线的变化而相应地发生变化,进而导致与三维模型实际所需要的质感效果不相符。

基于此,随着三维模型的转动,特定光照方向也需要随之转动,以使三维模型的法线与特定光照方向之间的夹角相对不变,从而保证通过球形贴图所模拟出的三维模型的质感效果相对不变,以符合三维模型实际所需要的质感效果。

在此补充说明的是,三维模型转动过程中,三维模型在三维场景中的法线相对不变,即法线始终指示了由三维模型指向相机的方向。

由此,对于三维场景中可转动的三维模型而言,在通过球形贴图对三维模型进行质感效果模拟之前,首先需要确定球形贴图绘制在三维模型的位置。

本实施例中,根据三维模型数据中的法线数据换算得到球形贴图坐标数据,此球形贴图坐标数据即指示了球形贴图绘制在三维模型的位置。

步骤333,对法线数据所表示的法线进行模型视图空间转换,得到球形贴图绘制在三维模型的球形贴图坐标数据。

应当说明的是,模型空间,是指三维模型所在的立体空间,即三维场景;而视图空间,则是指球形贴图所在的平面空间。由此,模型视图空间转换,实质上就是将三维模型在三维场景中的法线,即法线数据所表示的法线,投影至球形贴图所在的平面空间,以此来指示球形贴图绘制在三维模型的位置。

在一实施例的具体实现中,如果用户设备所运行的客户端为unity应用程序,则通过函数compute_view_normal的调用即可将法线数据转换为球形贴图坐标数据。

当然,根据用户设备所运行客户端的具体实现,法线数据的换算方法还可以通过调用其他不同的函数实现,本实施例并非对此加以限定。

步骤335,根据球形贴图坐标数据将球形贴图绘制在三维模型。

在获得球形贴图坐标数据之后,即可按照此球形贴图坐标数据所指示的球形贴图绘制在三维模型的位置进行贴图绘制,以此完成三维模型的质感效果模拟。

在上述过程中,对于三维模型可转动的三维模型而言,以三维模型在三维场景中的法线为参照物,使得球形贴图绘制在三维模型的位置随着三维模型法线的变化而相应地变化,以此保证三维模型的法线与特定光照方向之间的夹角相对不变,从而保证三维模型所模拟出的质感效果是符合三维模型实际需要的质感效果。

请参阅图6,在一示例性实施例中,步骤335可以包括以下步骤:

步骤3351,将球形贴图按照颜色通道的类型分割为对应红色通道的高光贴图、对应绿色通道的边缘光贴图和对应蓝色通道的反射光贴图。

本实施例中,颜色通道包括表示红色的红色通道r、表示绿色的绿色通道g、以及表示蓝色的蓝色通道b。

由此,按照颜色通道的上述三种类型,球形贴图即可相应地分割为:对应红色通道的高光贴图、对应绿色通道的边缘光贴图和对应蓝色通道的反射光贴图。

其中,高光贴图用于在三维模型不同部位模拟高光显示效果,边缘光贴图用于在三维模型的边缘位置模拟光照效果,反射光贴图用于在三维模型不同部位之间相交或者靠近时模拟出被遮挡的光照效果。

通过如此设置,有效地增强了三维模型的层次感、真实感,以使三维模型在三维场景显示时表现更清晰。

步骤3353,对高光贴图、边缘光贴图和反射光贴图分别进行多区域分布处理。

多区域分布处理,指的是将完整贴图划分为多个区域,可以是平均划分,也可以是非平均划分,在此不进行限定。

举例来说,按照九宫格的方式分别将高光贴图、边缘光贴图和反射光贴图划分为九个区域。

假设以数字来标识上述各贴图完成划分后的九个区域,则:

高光贴图的九个区域表示为{601,602,603,604,605,606,607,608,609};

边缘光贴图的九个区域表示为{611,612,613,614,615,616,617,618,619};

反射光贴图的九个区域表示为{621,622,623,624,625,626,627,628,629}。

步骤3355,分别选取高光贴图、边缘光贴图和反射光贴图中的其中一个区域,并按照球形贴图坐标数据叠加绘制在三维模型。

在完成高光贴图、边缘光贴图和反射光贴图各自的区域划分之后,即可从上述各贴图所划分区域中分别选取其中一个区域。

其中,区域选取可以是由上述各贴图所划分区域中选取对应位置的区域,还可以选取不同位置的区域,在此并不进行限定。

仍以九宫格方式划分为例,则所选取的区域可以是{601,611,621}等,即上述各贴图所划分区域中位于同一位置的区域,还可以是{601,614,628}等,即上述各贴图所划分区域中位于不同位置的区域。

在完成区域选取之后,即可将选取到的三个区域叠加形成一贴图,进而按照球形贴图坐标数据将此贴图绘制在三维模型,以完成三维模型的质感效果模拟。

应当理解,针对不同贴图,不同贴图模拟的效果不同,例如,高光贴图和反射光贴图所模拟的效果不同,而针对同一贴图所划分的区域,不同区域模拟的效果也各不相同,例如,就高光贴图来说,区域601和区域602所模拟的效果不同。那么,相较于单一的球形贴图,通过区域选取和区域叠加重新形成的贴图,所模拟出的三维模型的质感效果将更加地丰富,从而使得三维模型具有更良好的渲染效果。

请参阅图7,在一示例性实施例中,步骤350可以包括以下步骤:

步骤351,按照颜色通道的类型对遮罩贴图进行分割。

由于球形贴图按照颜色通道的类型进行了分割,以此丰富了通过球形贴图所模拟的三维模型的质感效果。为此,本实施例中,针对球形贴图所进行的分割,将相应地对遮罩贴图进行分割。

其中,颜色通道包括表示红色的红色通道r、表示绿色的绿色通道g、以及表示蓝色的蓝色通道b。

由此,按照颜色通道的上述三种类型,遮罩贴图即可相应地分割为:对应红色通道的红色通道贴图、对应绿色通道的绿色通道贴图和对应蓝色通道的蓝色通道贴图。

步骤353,将分割得到遮罩贴图中的红色通道贴图、绿色通道贴图、蓝色通道贴图分别作为高光贴图、边缘光贴图、反射光贴图的遮罩,按照三维模型数据中的纹理坐标数据叠加于高光贴图、边缘光贴图和反射光贴图。

如前所述,球形贴图会受到光照条件所指示的特定光照方向的约束,使得球形贴图绘制在三维模型的位置需要随着三维模型的法线而相应地发生变化,否则将导致通过球形贴图所模拟的三维模型的质感效果与三维模型实际需要的质感效果不相符,进而使得球形贴图绘制在三维模型的位置是由三维模型的法线换算得到。

不同于球形贴图,无论三维模型如何转动,遮罩贴图始终作用于三维模型不需要模拟出质感效果的部位,因此,本实施例中,遮罩贴图绘制在三维模型的位置是由三维模型数据中的纹理坐标数据确定的。

那么,在从三维模型数据中获得纹理坐标数据之后,即可按照此纹理坐标数据对三维模型所模拟的质感效果进行遮挡处理。

具体地,以由遮罩贴图分割得到的红色通道贴图、绿色通道贴图、蓝色通道贴图作为遮罩,分别按照纹理坐标数据叠加在球形贴图按照颜色通道分割得到的高光贴图、边缘光贴图、反射光贴图,以便于叠加了遮罩的高光贴图、边缘光贴图、反射光贴图进一步地叠加形成贴图,绘制在三维模型,以此完成三维模型所模拟质感效果的遮挡处理。

通过上述过程,实现了将遮罩贴图分割所得到的贴图分别作用于球形贴图分割所得到的贴图,使得三维模型在三维场景中所表现出的质感效果更加地细腻,有利于提升三维模型的渲染效果。

请参阅图8,在一示例性实施例中,步骤370之前,如上所述的方法还可以包括以下步骤:

步骤410,通过三维模型数据获取卡通贴图绘制在三维模型的卡通贴图坐标数据。

卡通贴图用于模拟光照明暗效果,也可以理解为,卡通贴图反映了三维模型实际所需要的光照明暗效果。类似于球形贴图,不同光照条件下,卡通贴图有所区别,相应地,通过不同的卡通贴图所模拟的三维模型的光照明暗效果也各自不同。

换而言之,对于三维场景中可转动的三维模型来说,卡通贴图绘制在三维模型的位置也需要随着三维模型的转动而相应地变化,以此保证三维模型的法线与同一光照条件所指示的特定光照方向之间的夹角相对不变,从而保证三维模型所模拟出的光照明暗效果是符合三维模型实际所需要的光照明暗效果。

为此,本实施例中,在通过卡通贴图对三维模型进行光照明暗效果模拟之前,首先需要确定卡通贴图绘制在三维模型的位置。

具体地,从三维模型数据中提取得到表示三维模型在三维场景中法线的法线数据,并根据此法线数据所表示的法线进行模型视图空间转换,得到卡通贴图坐标数据,此卡通贴图坐标数据即表示了卡通贴图绘制在三维模型的位置

在此说明的是,法线数据换算为卡通贴图坐标数据的过程,类似于法线数据换算为球形贴图坐标数据的过程,此处不再重复描述。

步骤430,根据卡通贴图坐标数据将卡通贴图绘制在三维模型,进行光照明暗效果模拟。

在获得卡通贴图坐标数据之后,即可按照此卡通贴图坐标数据所指示的卡通贴图绘制在三维模型的位置进行贴图绘制,以此完成三维模型的光照明暗效果模拟。

在上述过程中,对于三维模型可转动的三维模型而言,以三维模型在三维场景中的法线为参照物,使得卡通贴图绘制在三维模型的位置随着三维模型法线的变化而相应地变化,以此保证三维模型的法线与特定光照方向之间的夹角相对不变,从而保证三维模型模拟出的光照明暗效果是符合三维模型实际所需要的光照明暗效果。

当然,在其他实施例中,卡通贴图还可以替换为金属度贴图、环境贴图等等,以此增强三维模型在三维场景中的表现形式,有利于提升三维模型的渲染效果。

请参阅图9,在一示例性实施例中,三维场景为游戏场景,如上所述的方法还可以包括以下步骤:

步骤510,将渲染着色后的三维模型显示在游戏场景。

步骤530,检测对游戏场景中三维模型触发进行的控制操作,根据控制操作控制三维模型在游戏场景中执行对应动作。

对于用户而言,在游戏场景中显示了三维模型之后,即可借助用户设备所配置的输入组件(例如鼠标、键盘、触控屏幕等等)进行的控制操作,以此实现用户与三维模型之间的交互,即三维模型将按照控制操作的指示在游戏场景中执行对应动作。

举例来说,游戏场景提供对战任务,则为此游戏场景所创建的三维模型可以是参与对战任务的英雄人物,相应地,在游戏场景中呈现出英雄人物之后,用户即可通过控制操作控制英雄人物在游戏场景中执行跑跳动作、攻击动作、防御动作等等。

在此说明的是,根据用户设备所配置的输入组件的不同,控制操作也各不相同。例如,对于配置鼠标的台式电脑而言,控制操作可以是点击动作、拖拽动作等,而对于配置触控屏幕的智能手机而言,则控制操作可以是滑动手势等,在此不进行限定,即可控制三维模型在游戏场景中执行对应动作的操作均视为控制操作。

图10~11是一应用场景中一种三维模型渲染方法的具体实现示意图。该应用场景中,三维模型的渲染基于球形贴图和遮罩贴图结合的shader703。

如图10所示,在三维模型的渲染过程中,相较于传统shader701,shader703仅执行了简单顶点运算7031,即根据三维模型数据中法线数据所表示法线进行模型视图空间转换,避免执行复杂顶点运算7011,有效地减少了运算量。

进一步地,相较于传统shader701,shader703使用球形贴图7031模拟三维模型的质感效果,以此代替复杂的效果模拟运算7013,进一步降低了运算量。

如图12所示,通过球形贴图完成质感效果模拟的三维模型中,由于三维模型整体呈现出质感效果,使得三维模型在三维场景中的表现形式太过于单一呆板,为此,将利用shader703对三维模型所模拟出的质感效果进行遮挡处理。

如图11所示,在shader703渲染管线的流程中,shader703主要包括顶点着色器(vertexshader)和片元着色器(fragmentshader),其中,顶点着色器用于执行简单顶点运算,而片元着色器用于通过球形贴图模拟三维模型的质感效果。

通过步骤800,基于球形贴图按照颜色通道的类型所进行的分割,遮罩贴图也将相应地按照颜色通道的类型进行分割,并以分割所得作为遮罩进行贴图叠加,从而最终形成高光信息、边缘光信息、反射信息输入至片元着色器,以进行所模拟质感效果的遮挡处理,使得三维模型在三维场景中具有更良好的渲染效果,如图13所示。

值得一提的是,相较于传统shader701,如图11所示,是利用双向反射分布函数来计算高光信息等,这也就导致了传统shader701存在大量的运算,而不利于提高三维模型的渲染效率,进而存在渲染性能低下的问题。

在完成质感效果模拟之后,还可以通过卡通贴图等对三维模型进一步地模拟光照明暗效果,以此充分保证了三维模型在三维场景中具有良好的渲染效果,如图14所示。

待完成效果模拟,即可针对完成效果模拟的三维模型进行渲染着色,即通过颜色控制器执行颜色混合colorblending,最终存储至帧缓冲区framebuffer,如图11所示,进而使得三维场景中按帧显示完成渲染着色的三维模型。

对于三维场景显示出的三维模型,用户即可查看或者控制此三维模型,例如,地图场景中,用户即可查看此地图场景中的建筑模型,或者,游戏场景中,用户即可控制此游戏场景中的英雄人物执行对抗任务。

在本应用场景中,大幅度降低了三维模型渲染过程中的运算量,并且通过球形贴图和遮罩贴图的结合,使得利用单一shader即可模拟出丰富的三维模型的质感效果,不仅有效地提高了渲染效率,提升了渲染性能,而且充分地保证了三维模型在三维场景中具有良好的渲染效果。

尤其针对提供游戏场景的游戏客户端,由于具有极低的性能开销和极小的内存增加量,不仅适用于配置了不同硬件的多种用户设备,例如台式电脑、智能手机、平板电脑等等,使得游戏客户端可流畅地运行于用户设备,而且具有良好的三维模型渲染效果,使得游戏画面丰富细腻,有利于提升用户的游戏体验。

下述为本发明装置实施例,可以用于执行本发明所涉及的三维模型渲染方法。对于本发明装置实施例中未披露的细节,请参照本发明所涉及的三维模型渲染方法的方法实施例。

请参阅图15,在一示例性实施例中,一种三维模型渲染装置900包括但不限于:数据获取模块910、光照模拟模块930、遮挡处理模块950和渲染着色模块970。

其中,数据获取模块910用于获取三维模型数据和材质数据,三维模型数据用于描述为三维场景创建的三维模型,材质数据包括球形贴图和遮罩贴图。

光照模拟模块930用于通过球形贴图对三维模型数据所描述的三维模型进行质感效果模拟。

遮挡处理模块950用于根据三维模型数据控制遮罩贴图对三维模型所模拟的质感效果进行遮挡处理。

渲染着色模块970用于对完成效果模拟的三维模型进行渲染着色。

请参阅图16,在一示例性实施例中,光照模拟模块930包括但不限于:数据提取单元931、数据转换单元933和球形贴图绘制单元935。

其中,数据提取单元931用于从三维模型数据中提取法线数据,法线数据用于表示三维模型在三维场景中的法线。

数据转换单元933用于对法线数据所表示的法线进行模型视图空间转换,得到球形贴图绘制在三维模型的球形贴图坐标数据。

球形贴图绘制单元935用于根据球形贴图坐标数据将球形贴图绘制在三维模型。

请参阅图17,在一示例性实施例中,球形贴图绘制单元935包括但不限于:球形贴图分割子单元9351、分布处理子单元9353和贴图叠加子单元9355。

其中,球形贴图分割子单元9351用于将球形贴图按照颜色通道的类型分割为对应红色通道的高光贴图、对应绿色通道的边缘光贴图和对应蓝色通道的反射光贴图。

分布处理子单元9353用于对高光贴图、边缘光贴图和反射光贴图分别进行多区域分布处理。

贴图叠加子单元9355用于分别选取高光贴图、边缘光贴图和反射光贴图中的其中一个区域,并按照球形贴图坐标数据叠加绘制在三维模型。

请参阅图18,在一示例性实施例中,遮挡处理模块950包括但不限于:遮罩贴图分割单元951和贴图叠加单元953。

其中,遮罩贴图分割单元951用于按照颜色通道的类型对遮罩贴图进行分割。

贴图叠加单元953用于将分割得到遮罩贴图中的红色通道贴图、绿色通道贴图、蓝色通道贴图分别作为高光贴图、边缘光贴图、反射光贴图的遮罩,按照三维模型数据中的纹理坐标数据叠加于高光贴图、边缘光贴图和反射光贴图。

请参阅图19,在一示例性实施例中,如上所述的装置900还包括但不限于:坐标数据获取模块1010和卡通贴图绘制模块1030。

其中,坐标数据获取模块1010用于通过三维模型数据获取卡通贴图绘制在三维模型的卡通贴图坐标数据。

卡通贴图绘制模块1030用于根据卡通贴图坐标数据将指定卡通贴图绘制在三维模型,进行光照明暗效果模拟。

在一示例性实施例中,渲染着色模块950包括但不限于:颜色混合单元。

其中,颜色混合单元用于待三维模型完成效果模拟,则调用颜色控制器控制三维模型对应的颜色通道执行颜色混合。

请参阅图20,在一示例性实施例中,三维场景为游戏场景,如上所述的装置900还包括但不限于:模型显示模块1110和模型控制模块1130。

其中,模型显示模块1110用于将渲染着色后的三维模型显示在游戏场景。

模型控制模块1130用于检测对游戏场景中三维模型触发进行的控制操作,根据控制操作控制三维模型在游戏场景中执行对应动作。

需要说明的是,上述实施例所提供的三维模型渲染装置在进行三维模型渲染处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即三维模型渲染装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。

另外,上述实施例所提供的三维模型渲染装置与三维模型渲染方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。

在一示例性实施例中,一种三维模型渲染装置,包括处理器及存储器。

其中,存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时实现上述各实施例中的三维模型渲染方法。

在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的三维模型渲染方法。

上述内容,仅为本发明的较佳示例性实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1