渲染方法和装置转让专利

申请号 : CN201610149713.3

文献号 : CN107204029B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 安柏霖屈禹呈化超煜

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明涉及一种渲染方法和装置,用于针对三维游戏显示画面中的皮肤区域进行渲染,所述渲染方法包括:确定待渲染的显示画面中的皮肤区域;根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息;针对所述第一光照信息进行次表面散射计算,得到第二光照信息;将所述第二光照信息应用于所述皮肤区域的贴图,以实现对所述皮肤区域的渲染。

权利要求 :

1.一种渲染方法,用于针对三维游戏显示画面中的皮肤区域进行渲染,所述方法包括:确定待渲染的显示画面中的皮肤区域;

根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息,其中所述第一光照信息表示为未贴图的所述皮肤区域在光源的照射下所表现出来的颜色变化;

针对所述第一光照信息进行次表面散射计算,得到第二光照信息;

将所述第二光照信息应用于所述皮肤区域的贴图,以实现对所述皮肤区域的渲染。

2.根据权利要求1所述的渲染方法,其中,针对所述第一光照信息进行次表面散射计算包括:在模板缓冲区中,针对所述皮肤区域标记所述第一光照信息;以及针对所述模板缓冲区中标记的第一光照信息进行次表面散射计算。

3.根据权利要求2所述的渲染方法,其中,针对所述第一光照信息进行次表面散射计算还包括:在所述模板缓冲区中,针对除所述皮肤区域以外的其他区域进行标记,使得在进行次表面散射计算时跳过所述其他区域。

4.根据权利要求1至3中任意一项所述的渲染方法,其中所述次表面散射计算为基于屏幕空间的次表面散射计算。

5.根据权利要求1至3中任意一项所述的渲染方法,其中,针对未贴图的所述皮肤区域建立第一光照信息包括:将未贴图的所述皮肤区域设置为预定的底色;以及计算所述预定底色的皮肤区域在设置光源的照射下的颜色变化,作为所述第一光照信息。

6.根据权利要求1至3中任意一项所述的渲染方法,还包括:设置第一辅助光源,所述第一辅助光源的照射方向与玩家视角摄像机的拍摄方向一致。

7.根据权利要求1至3中任意一项所述的渲染方法,还包括:设置第二辅助光源,所述第二辅助光源为表现天空反射光的半球状光源,并且所述半球状光源的半径能够调节。

8.根据权利要求1至3中任意一项所述的渲染方法,还包括设置第三辅助光源,所述第三辅助光源为表现地面反射光的半球状光源,并且所述半球状光源的半径能够调节。

9.根据权利要求1至3中任意一项所述的渲染方法,其中,将所述第二光照信息应用于所述皮肤区域的贴图包括:将所述第二光照信息与所述皮肤区域的贴图数据合并以得到合并后的贴图数据;以及利用所述合并后的贴图数据对所述皮肤区域进行贴图,以实现对所述皮肤区域的渲染。

10.一种渲染装置,用于针对三维游戏显示画面中的皮肤区域进行渲染,所述装置包括:确定部件,用于确定待渲染的显示画面中的皮肤区域;

建立部件,用于根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息,其中所述第一光照信息表示为未贴图的所述皮肤区域在光源的照射下所表现出来的颜色变化;

计算部件,用于针对所述第一光照信息进行次表面散射计算,得到第二光照信息;以及应用部件,用于将所述第二光照信息应用于所述皮肤区域的贴图,以实现对皮肤区域的渲染。

11.根据权利要求10所述的渲染装置,其中,所述计算部件包括:第一标记部件,用于在模板缓冲区中,针对所述皮肤区域标记所述第一光照信息;以及次表面散射计算部件,用于针对所述模板缓冲区中标记的第一光照信息进行次表面散射计算。

12.根据权利要求11所述的渲染装置,其中,所述计算部件还包括:第二标记部件,在所述模板缓冲区中,针对除所述皮肤区域以外的其他区域进行标记,使得在进行次表面散射计算时跳过所述其他区域。

13.根据权利要求10至12中任意一项所述的渲染装置,其中所述次表面散射计算为基于屏幕空间的次表面散射计算。

14.根据权利要求10至12中任意一项所述的渲染装置,其中,所述建立部件包括:底色设置部件,将未贴图的所述皮肤区域设置为预定的底色;以及第一光照信息计算部件,计算所述预定底色的皮肤区域在设置光源的照射下的颜色变化,作为所述第一光照信息。

15.根据权利要求10至12中任意一项所述的渲染装置,还包括:第一辅助光源设置部件,用于设置第一辅助光源,所述第一辅助光源的照射方向与玩家视角摄像机的拍摄方向一致。

16.根据权利要求10至12中任意一项所述的渲染装置,还包括:第二辅助光源设置部件,用于设置第二辅助光源,所述第二辅助光源为表现天空反射光的半球状光源,并且所述半球状光源的半径能够调节。

17.根据权利要求10至12中任意一项所述的渲染装置,还包括第三辅助光源设置部件,用于设置第三辅助光源,所述第三辅助光源为表现地面反射光的半球状光源,并且所述半球状光源的半径能够调节。

18.根据权利要求10至12中任意一项所述的渲染装置,其中,所述应用部件包括:合并部件,用于将所述第二光照信息与所述皮肤区域的贴图数据合并以得到合并后的贴图数据;以及贴图部件,用于利用所述合并后的贴图数据对所述皮肤区域进行贴图,以实现对所述皮肤区域的渲染。

说明书 :

渲染方法和装置

技术领域

[0001] 本发明涉及图像处理领域,尤其涉及一种渲染方法和装置。

背景技术

[0002] 在针对三维游戏显示画面中的皮肤区域进行渲染的过程中,为了追求逼真写实的效果,通常要考虑次表面散射现象。
[0003] 次表面散射简称3S(Subsurface scattering),是光射入皮肤等非金属透光材质的物体后在内部发生散射,然后又通过物体表面的其他顶点出射的光线传递过程。
[0004] 为了表达这种次表面散射现象,目前传统的方法是在渲染过程中,针对显示画面中的皮肤区域进行次表面散射计算。这种计算通常会使皮肤区域的显示效果更加柔和通透,接近真实质感,然而这种计算通常也会模糊皮肤表面的纹理细节,导致例如皮肤表面的斑纹等细节显示不清晰,降低了画面质量。

发明内容

[0005] 有鉴于此,本发明提出了一种渲染方法和装置,其能够针对三维游戏显示画面中的皮肤区域实现高质量渲染,在表现次表面散射现象的同时,避免现有技术中的纹理模糊问题。
[0006] 一方面,提出了一种渲染方法,用于针对三维游戏显示画面中的皮肤区域进行渲染,所述方法包括:确定待渲染的显示画面中的皮肤区域;根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息;针对所述第一光照信息进行次表面散射计算,得到第二光照信息;将所述第二光照信息应用于所述皮肤区域的贴图,以实现对所述皮肤区域的渲染。
[0007] 在一个示例中,针对所述第一光照信息进行次表面散射计算包括:在模板缓冲区中,针对所述皮肤区域标记所述第一光照信息;以及针对所述模板缓冲区中标记的第一光照信息进行次表面散射计算。
[0008] 在一个示例中,针对所述第一光照信息进行次表面散射计算还包括:在所述模板缓冲区中,针对除所述皮肤区域以外的其他区域进行标记,使得在进行次表面散射计算时跳过所述其他区域。
[0009] 在一个示例中,所述次表面散射计算为基于屏幕空间的次表面散射计算。
[0010] 在一个示例中,针对未贴图的所述皮肤区域建立第一光照信息包括:将未贴图的所述皮肤区域设置为预定的底色;以及计算所述皮肤区域在光源的设置下的颜色变化,作为所述第一光照信息。
[0011] 在一个示例中,所述渲染方法还包括:设置第一辅助光源,所述第一辅助光源的照射方向与玩家视角摄像机的拍摄方向一致。
[0012] 在一个示例中,所述渲染方法还包括:设置第二辅助光源,所述第二辅助光源为表现天空反射光的半球状光源,并且所述半球状光源的半径能够调节。
[0013] 在一个示例中,所述渲染方法还包括:设置第三辅助光源,所述第三辅助光源为表现地面反射光的半球状光源,并且所述半球状光源的半径能够调节。
[0014] 在一个示例中,将所述第二光照信息应用于所述皮肤区域的贴图包括:将所述第二光照信息与所述皮肤区域的贴图数据合并以得到合并后的贴图数据;以及利用所述合并后的贴图数据对所述皮肤区域进行贴图,以实现对所述皮肤区域的渲染。
[0015] 另一方面,提出了一种渲染装置,用于针对三维游戏显示画面中的皮肤区域进行渲染,所述装置包括:确定部件,用于确定待渲染的显示画面中的皮肤区域;建立部件,用于根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息;计算部件,用于针对所述第一光照信息进行次表面散射计算,得到第二光照信息;以及应用部件,用于将所述第二光照信息应用于所述皮肤区域的贴图,以实现对皮肤区域的渲染。
[0016] 在一个示例中,所述计算部件包括:第一标记部件,用于在模板缓冲区中,针对所述皮肤区域标记所述第一光照信息;以及次表面散射计算部件,用于针对所述模板缓冲区中标记的第一光照信息进行次表面散射计算。
[0017] 在一个示例中,所述计算部件还包括:第二标记部件,在所述模板缓冲区中,针对除所述皮肤区域以外的其他区域进行标记,使得在进行次表面散射计算时跳过所述其他区域。
[0018] 在一个示例中,所述次表面散射计算为基于屏幕空间的次表面散射计算。
[0019] 在一个示例中,所述建立部件包括:底色设置部件,将未贴图的所述皮肤区域设置为预定的底色;以及第一光照信息计算部件,计算所述皮肤区域在光源的设置下的颜色变化,作为所述第一光照信息。
[0020] 在一个示例中,所述渲染装置还包括:第一辅助光源设置部件,用于设置第一辅助光源,所述第一辅助光源的照射方向与玩家视角摄像机的拍摄方向一致。
[0021] 在一个示例中,所述渲染装置还包括:第二辅助光源设置部件,用于设置第二辅助光源,所述第二辅助光源为表现天空反射光的半球状光源,并且所述半球状光源的半径能够调节。
[0022] 在一个示例中,所述渲染装置还包括:第三辅助光源设置部件,用于设置第三辅助光源,所述第三辅助光源为表现地面反射光的半球状光源,并且所述半球状光源的半径能够调节。
[0023] 在一个示例中,所述应用部件包括:合并部件,用于将所述第二光照信息与所述皮肤区域的贴图数据合并以得到合并后的贴图数据;以及贴图部件,用于利用所述合并后的贴图数据对所述皮肤区域进行贴图,以实现对所述皮肤区域的渲染。
[0024] 根据本发明的各方面,在针对三维游戏显示画面中的皮肤区域进行渲染的过程中,皮肤区域的贴图中的纹理信息并未参与次表面散射计算,纹理细节不会模糊,使得在呈现皮肤区域的次表面散射现象的同时,保留了清晰的纹理信息,提高了三维游戏显示画面质量。
[0025] 根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。

附图说明

[0026] 包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
[0027] 图1示出根据本发明一实施例的渲染方法的流程图。
[0028] 图2a-图2c显示了在一个示例性的应用场景中,本发明实施例所实现的效果与现有技术的对比图。
[0029] 图3示意性地示出了显示画面中的颜色溢出现象。
[0030] 图4示出了根据本发明的另一实施例的一种渲染方法的流程图。
[0031] 图5示意性地示出了第一辅助光源与玩家视角摄像机的关系。
[0032] 图6示意性地示出了使用第一辅助光源的效果。
[0033] 图7示出根据本发明一实施例的渲染装置的框图。
[0034] 图8示出根据本发明另一实施例的渲染装置的框图。
[0035] 图9示意性地示出根据本发明实施例的渲染方法和装置的一个应用示例。

具体实施方式

[0036] 以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0037] 在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0038] 另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
[0039] 实施例1
[0040] 图1示出根据本发明一实施例的渲染方法的流程图。如图1所示,该方法用于针对三维游戏显示画面中的皮肤区域进行渲染,该方法主要包括:
[0041] 步骤101,确定待渲染的显示画面中的皮肤区域;
[0042] 步骤102,根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息;
[0043] 步骤103,针对所述第一光照信息进行次表面散射计算,得到第二光照信息;
[0044] 步骤104,将所述第二光照信息应用于所述皮肤区域的贴图,以实现对所述皮肤区域的渲染。
[0045] 构建三维图像的过程通常包括建模、贴图、渲染等环节。建模通常指构建对象几何结构模型的过程,贴图通常指设定对象表面性状(例如纹理、颜色等)的过程,渲染通常指通过一系列计算,将包含有几何、表面性状、光源、视角等信息的模型转换成所显示的图像的过程。
[0046] 发明人认识到,传统渲染方法中,在对需要考虑次表面散射现象的皮肤区域进行渲染时,次表面散射计算通常是在贴图之后进行的,即先对皮肤区域进行贴图,设定其表面性状,再针对贴图后的皮肤区域进行次表面散射计算,这样,贴图中的纹理信息均参与到次表面散射计算中,在使得渲染得到的图像中,皮肤区域的光照效果更柔和的同时,也造成纹理细节模糊。本实施例对现有技术做出了改进,在渲染中首先针对未贴图的皮肤区域建立第一光照信息,再针对该第一光照信息进行次表面散射计算,得到第二光照信息,然后将第二光照信息应用于贴图,以实现对皮肤区域的渲染,这样一来,贴图中的纹理信息并未参与次表面散射计算,纹理细节不会模糊,使得渲染得到的图像中的皮肤区域在呈现次表面散射现象的同时,保留了清晰的纹理信息,提高了画面质量。
[0047] ,在针对三维游戏显示画面中的皮肤区域进行渲染的情况下,该实施例可呈现逼真的皮肤质感,同时清晰地显示皱纹、斑块等皮肤纹理细节。
[0048] 图2a-图2c显示了在一个示例性的应用场景中,本发明实施例所实现的效果与现有技术的对比图。该示例性的应用场景为三维游戏的显示画面,以人物皮肤区域作为渲染对象。本领域技术人员应理解,该示例仅为了说明本实施例所实现的效果,并未以任何方式限制本发明。
[0049] 图2a显示了未进行次表面散射计算的显示效果,其中人物面部的皮肤在光照下没有呈现出逼真的皮肤质感。图2b显示了利用现有技术进行次表面散射计算的显示效果,其中人物皮肤能够呈现出较为逼真的皮肤质感,但是人物面部的某些纹理细节(例如下颌的斑纹,嘴角和眼周的皱纹等)均被模糊化了,导致显示细节缺失。图2c显示了利用本实施例的方法的显示效果,其中,不但人物皮肤能够呈现出逼真的皮肤质感,面部的纹理细节也得以保留并清晰显示,提高了显示效果。
[0050] 在一个示例中,可根据建模信息确定待渲染的显示画面中的皮肤区域,从人物的建模信息中通常可定位到人物的面部、暴露的肢体等皮肤区域。
[0051] 在一个示例中,可将未贴图的皮肤区域设置为预定的底色,例如灰色或根据需要的任何其他底色,并计算该底色的皮肤区域在光源的设置下的颜色变化,作为所述第一光照信息。例如,可以先确定光源的设置参数,例如各光源的位置、光源类型(太阳光、直射光源、点状光源等)、光照强度、光谱参数等。然后,可根据该皮肤区域中各像素与光源之间的位置关系(可选地,还可根据皮肤区域的材质参数等其他因素)来计算第一光照信息。该第一光照信息可表示皮肤区域在光源的照射下所表现出来的颜色变化。
[0052] 在一个示例中,针对所述第一光照信息进行次表面散射计算可包括:在模板缓冲区中,针对皮肤区域标记第一光照信息;以及针对模板缓冲区中标记的第一光照信息进行次表面散射计算。
[0053] 该示例中所采用的“模板缓冲区”(Stencil Buffer)是显卡中的一个可以使用的缓冲特性,其能够为每个像素标记一个相应的数值,该示例利用“模板缓冲区”作为针对次表面散射计算的“掩模”(mask,通常指游戏开发中使用的遮罩),将次表面散射计算限制在所标记区域之内,如后文详述,这样不但提高了处理效率,也避免了颜色溢出问题。
[0054] 在本示例中,在模板缓冲区中标记第一光照信息例如可通过如下方式实现:可以在模板缓冲区中为皮肤区域对应的每个像素标记一个数值,该数值可与第一光照信息所表示的该像素的颜色信息相对应。相应地,还可在所述模板缓冲区中,针对除所述皮肤区域之外的其他区域不标记,或进行与皮肤区域相区分的标记,使得在进行次表面散射计算时跳过所述其他区域。例如,可以采用与上述一系列数值都不同的某一预定数值(例如表示黑色的数值)来标记其他区域,或不标记其他区域。
[0055] 这样一来,在进行后续的次表面散射计算时,就可以仅基于皮肤区域的第一光照信息进行计算,这大大降低了计算量,提高了计算效率。以三维大型多人在线角色扮演游戏(MMORPG,Massively Multiple-player Online Role-Playing Game)作为例子,通过本示例的方法提高渲染效率后,可以在数量庞大的多人(例如300人)对战的场景中,保持很高的渲染效率,同时使渲染效果达到CG(计算机图形学,Computer Graphics)级别的栩栩如生的皮肤质感。
[0056] 同时,该示例还能够有效地避免颜色溢出问题。次表面散射计算通常是基于某像素周围像素的颜色来计算该像素的颜色。在现有技术中,在次表面散射计算时不跳过皮肤区域之外的其他区域,这样在皮肤区域与其他区域的边界地带(例如皮肤与衣服、头发的边界地带),就很容易由于其他区域的颜色干扰,而造成次表面散射计算后在皮肤区域中发生颜色溢出(即所计算得到的颜色超出了像素的颜色取值范围)。图3中箭头所指的区域示意了显示画面中的这种颜色溢出现象。而本示例通过利用模板缓冲区作为掩模,使得除皮肤区域之外的其他区域不参与次表面散射计算,不但提高了计算效率,也有效避免了颜色溢出问题。
[0057] 在一个示例中,上述针对皮肤区域的第一和第二光照信息的计算可在所有其他区域的光照信息的计算之前进行,这样,针对皮肤区域的光照信息的计算不会受到其他区域的光照信息的影响,从而能够避免颜色溢出问题。
[0058] 在一个示例中,本实施例的次表面散射计算可以是基于屏幕空间的次表面散射计算。相对于基于模型空间等的其他类型的次表面散射计算,基于屏幕空间的次表面散射计算仅针对屏幕中显示的皮肤区域进行计算,而不是针对模型中所有皮肤区域进行计算,能够提高计算效率。
[0059] 本领域技术人员可根据需要来选择次表面散射计算的具体方法,本发明对此不作限制。
[0060] 在一个示例中,可将进行次表面散射计算得到的第二光照信息应用于皮肤区域的贴图,例如,将第二光照信息与皮肤区域的贴图数据进行合并得到合并后的贴图数据,再利用合并后的贴图数据对皮肤区域进行贴图,以实现对皮肤区域的渲染,从而实现质感逼真、纹理清晰的显示效果。这里所说的合并,可以是例如叠加等能够将第二光照信息和贴图数据整合在一起的方式,本领域技术人员可根据实际需要选择适当的合并方式。
[0061] 实施例2
[0062] 图4示出了根据本发明的另一实施例的一种渲染方法的流程图。其中,步骤402-405与实施例1中的步骤101-104相似,在此不再重复描述。在实施例1的基础上,该实施例的方法还包括步骤401,设置第一辅助光源,所述第一辅助光源的照射方向与玩家视角摄像机的拍摄方向一致。
[0063] 在现有技术中,三维角色扮演游戏中对角色的照明通常只采用主太阳作为光源,然而当角色处于阴影或背光状态时,因为光照不足,角色的显示效果通常不佳。
[0064] 为此,本实施例针对这样的应用场景进一步设置了照射方向与玩家视角摄像机的拍摄方向一致的第一辅助光源,该第一辅助光源可以看作是绑定在玩家视角摄像机上、并且照射角度可以随着玩家视角摄像机的拍摄角度改变的光源。这样一来,使得玩家在任意拍摄角度看到角色时,角色都被第一辅助光源正面照射,弥补了特定环境下光源不足的问题。
[0065] 本领域技术人员应理解,玩家视角摄像机,即为拍摄视角为玩家所见视角的摄像机。
[0066] 为便于理解,图5示意性地示出了第一辅助光源与玩家视角摄像机的关系,其中箭头所指为玩家视角摄像机拍摄方向,也是第一辅助光源照射方向。图6则示意性地示出了使用第一辅助光源带来的效果。其中,左图未使用第一辅助光源,在背光环境下人物光照不足,显示效果不佳,而右图使用了第一辅助光源,尽管人物仍在太阳光的阴影中,但是却在第一辅助光源的作用下得到了充分的光照,显示效果明显提高。
[0067] 在一个示例中,第一辅助光源可以是直射光源。
[0068] 在又一示例中,还可以设置第二辅助光源,该第二辅助光源可以为表现天空反射光的半球状光源,并且所述半球状光源的半径能够调节。通过该第二辅助光源,可以表现真实环境中的天空反射光(或称为“天光”),使显示效果更加逼真。可根据需要对半球状的第二辅助光源的半径进行调节,例如根据角色的显示位置对第二辅助光源的半径进行缩放,使第二辅助光源的照射更集中于角色本身,进一步提高角色的显示效果。
[0069] 在又一示例中,还可以设置第三辅助光源,所述第三辅助光源为表现地面反射光的半球状光源,并且所述半球状光源的半径能够调节。通过该第三辅助光源,可以表现真实环境中的地面反射光(或称为“地光”),使显示效果更加逼真。可根据需要对半球状的第三辅助光源的半径进行调节,例如根据角色的显示位置对第三辅助光源的半径进行缩放,使第三辅助光源的照射更集中于角色本身,进一步提高角色的显示效果。
[0070] 通过对第一、第二、第三辅助光源中的一个或多个的调节,可以根据需要更灵活地设置灯光照射方式,拉开角色与场景的层次,增强角色的存在感,提高服饰褶皱等细节部位的明暗对比度,改善显示效果。
[0071] 并且,第一、第二、第三辅助光源的设置与实施例1的渲染方法相结合,能够进一步增强皮肤区域的灯光表现效果,提高画面质量。
[0072] 实施例3
[0073] 图7示出根据本发明一实施例的渲染装置的框图。如图7所示,该渲染装置700用于针对三维游戏显示画面中的皮肤区域进行渲染,该装置主要包括:确定部件701,用于确定待渲染的显示画面中的皮肤区域;建立部件702,用于根据光源的设置,针对未贴图的所述皮肤区域建立第一光照信息;计算部件703,用于针对所述第一光照信息进行次表面散射计算,得到第二光照信息;以及应用部件704,用于将所述第二光照信息应用于所述皮肤区域的贴图,以实现对皮肤区域的渲染。
[0074] 在本实施例中,贴图中的纹理信息并未参与次表面散射计算,纹理细节不会模糊,使得在呈现次表面散射现象的同时,保留了清晰的纹理信息,提高了画面质量。
[0075] 在一个示例中,所述计算部件还可包括:第一标记部件,用于在模板缓冲区中,针对所述皮肤区域标记所述第一光照信息;以及次表面散射计算部件,用于针对所述模板缓冲区中标记的第一光照信息进行次表面散射计算。
[0076] 在一个示例中,所述计算部件还可包括:第二标记部件,在所述模板缓冲区中,针对除所述皮肤区域以外的其他区域进行标记,使得在进行次表面散射计算时跳过所述其他区域。采用模板缓冲区,提高了渲染效率,并避免了颜色溢出问题。
[0077] 在一个示例中,次表面散射计算可为基于屏幕空间的次表面散射计算,从而进一步提高渲染效率。
[0078] 在一个示例中,所述建立部件可包括:底色设置部件,将未贴图的皮肤区域设置为预定的底色;以及第一光照信息计算部件,计算所述皮肤区域在光源的设置下的颜色变化,作为所述第一光照信息。
[0079] 在一个示例中,所述应用部件可包括:合并部件,用于将所述第二光照信息与所述皮肤区域的贴图数据合并以得到合并后的贴图数据;以及贴图部件,用于利用所述合并后的贴图数据对所述皮肤区域进行贴图,以实现对所述皮肤区域的渲染。
[0080] 对于模板缓冲区、第一光照信息的建立等具体实施方式的描述可参见上文对实施例1的描述,这里出于简明的目的不再重复描述。
[0081] 实施例4
[0082] 图8示出根据本发明另一实施例的渲染装置的框图。图8中与图7相同的附图标记代表相同的部件,这里不再重复描述。在图7所示实施例的基础上,图8所示实施例的渲染装置800还包括:第一辅助光源设置部件705,用于设置第一辅助光源,所述第一辅助光源的照射方向与玩家视角摄像机的拍摄方向一致。
[0083] 第一辅助光源可以看作是绑定在玩家视角摄像机上、并且照射角度可以随着玩家视角摄像机的拍摄角度改变的光源。这样一来,使得玩家在任意拍摄角度看到角色时,角色都被第一辅助光源正面照射,弥补了特定环境下光源不足的问题。
[0084] 在一个示例中,渲染装置还可包括:第二辅助光源设置部件,用于设置第二辅助光源,所述第二辅助光源为表现天空反射光的半球状光源,并且所述半球状光源的半径能够调节。
[0085] 在一个示例中,渲染装置还可包括:第三辅助光源设置部件,用于设置第三辅助光源,所述第三辅助光源为表现地面反射光的半球状光源,并且所述半球状光源的半径能够调节。
[0086] 对第一、第二、第三辅助光源的具体实施方式的描述参见上文实施例2,这里出于简明的目的不再重复描述。
[0087] 应用示例
[0088] 以下结合图9给出根据本发明实施例的渲染方法和装置的一个应用示例,本领域技术人员应理解,该应用示例仅为了便于理解本发明的实施例,而不以任何方式限制本发明。
[0089] 一个示例性应用场景为3D大型多人在线角色扮演游戏的3D显示。假设已经完成了对人物、建筑等的建模过程,并准备好了贴图数据等渲染所需的信息。应用本发明实施例的渲染方法或装置进行渲染时,可根据上述实施例设置第一辅助光源、第二辅助光源和第三辅助光源中的一个或多个,与主太阳等其他光源共同构成渲染所用的光源。假设当前所需渲染的一帧画面中存在人物(参见图9),可根据建模信息确定该人物的皮肤区域,并将该皮肤区域设定为例如灰色的底色。可基于所设置的光源,计算出各光源照射灰色的皮肤区域后,皮肤区域的颜色变化,作为上述第一光照信息(如图9(a)所示意性示出的)。可在模板缓冲区中为皮肤区域对应的每个像素标记一个数值来代表第一光照信息,例如数值1-5,不同的数值代表引入光源产生的效应后灰色皮肤呈现的不同的颜色,皮肤区域以外的其他区域用0标记,以区分于皮肤区域。可针对模板缓冲区中非0值的区域的第一光照信息进行次表面散射计算,得到了第二光照信息(如图9(b)所示意性示出的)。可将该第二光照信息与前文中准备好的贴图数据合并(例如叠加),对人物皮肤区域进行贴图,以实现对皮肤区域的渲染。对图像中的其他区域,可利用本领域技术人员可选择的手段进行渲染,从而完成整帧画面的渲染。在最终显示的画面中,皮肤区域经过了上述处理,可呈现逼真质感和清新纹理(如图9(c)所示意性示出的)。
[0090] 在一个示例性应用场景下,本实施例的渲染方法和装置可内嵌于3D游戏引擎中。3D游戏引擎通常指场景为3D表现,整合了各种3D图形算法和3D碰撞算法的游戏引擎。
[0091] 附图中的流程图和框图显示了根据本发明的多个实施例的方法和装置的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0092] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0093] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。