静态光照

来自c2wiki
跳转至: 导航搜索

介绍

静态光照是一种常见的材质类型。首先,我们给静态光照材质下一个通俗的定义:物体在静态光源下所表现的材质效果。静态光源,顾名思义,即在游戏运行中静止的光源。

当静态光源照亮一个静态表面时,光照是静态的,可以预先计算并存储在光照贴图中。这样,使用该模型时,直接添加光照贴图即能出现满意的光照效果。

与实时光照相比,静态光照弊端明显,但是却有个不得不选择的理由——节约系统开销,运行效率高!与PC端游戏不同,手游由于移动平台的限制,运行效率至关重要。实时光照意味着实时渲染,而静态光照是以光照贴图的方式展示,效率高低不言而喻。

如果您做的不是一款实时天气游戏,那么光源位置、光源强度往往是固定的,对静态场景而言,静态光照完全可以胜任。

参数说明

jtgz26.jpg

  • 固有色贴图:模型本体的贴图。
  • 光照贴图:模型打光后,生成的光照贴图。
  • 渲染模式:有三种模式——不透明、透明检测、透明融合。
不透明:完全不透明。
透明检测:检测有通道的贴图是否有透明效果。
透明:材质透明效果。如薄纱类材质,需选择透明渲染模式。
  • 双面渲染:当我们渲染一个完全封闭的物体时,多边形的背面都是隐藏的,我们无法看到。但是如果这个物体有一些空洞,那么一些背面就可以被看见了,这时候,就需要勾选“双面渲染”效果。如:陶瓷茶杯。当杯盖盖住时,为了节约效率,建议不勾选“双面渲染”,但如果把杯盖打开,我们需要看到杯内的情况,那么则需要勾选“双面渲染”。
  • 角色环境光:勾选之后,会受角色环境光影响。

制作实例

下面,我们提供一个制作实例,希望可以加深您的理解。我们需要一款软件:3Dmax,并且希望您有相关美术基础。(关于3Dmax的教程,在此不作详细讲解)

最终达成效果图的三要素:

a.模型------------模型本体

b.模型固有贴图----模型本体的贴图

c.模型光照贴图----通过max灯光渲染生成

C²engine效果图:

jtgz00.jpg

步骤一:布置灯光

1、在3Dmax搭建好场景后,设置场景环境光(3Dmax快捷键:数字键8)。场景环境光是场景光线的基础色调,其他各种灯光在此基础上进行添加、调节。

jtgz04.jpg

2、除了场景环境光,我们还需要根据效果增加各种光源。(事先模型分组,如果场景模型过大,建议分多个组)

在3Dmax中打好灯光的效果为:
jtgz05.jpg jtgz06.jpg
注意:为了防止转换曝光问题,在3Dmax中打好灯光后,渲染输出光照图时,所有灯光强度参数需要除以4,添加至C²engine后,C²engine会自动为灯光强度乘以4。
灯光参数除以4之后的效果:
jtgz07.jpg      jtgz08.jpg     jtgz09.jpg

步骤二:生成光照贴图和FBX模型

1、设置输出文件夹路径(3Dmax快捷键:数字键0)。为了方便管理,一般保存在项目贴图路径文件夹中。

jtgz10.jpg

2、选择需要添加光照图的单个模型后,在“贴图烘焙设置”(3Dmax快捷键:数字键0)中,根据图示步骤,逐步添加。

jtgz11.jpg

注意:文件格式选择png格式。贴图大小请根据模型大小、项目需求品质选择合适大小。

3、生成光照UV后,通过下图步骤①至②分配UV布局,以充分利用UV空间。

jtgz13.jpg

注意:贴图间距根据实际情况选择(若间距过大,会使贴图位置不足以至重叠;若间距过小则会过于拥挤使贴图压边)。上述步骤中的光照UV为系统自动生成,由于贴图过于零碎,可能会导致模型有光影接缝,出现该情况则建议手动配置光照UV。

4、按上述方法生成光照UV后,在渲染设置(3Dmax快捷键:9)的“高级灯光”中选择“光追踪器”模式(Light Tracer)。选中需要渲染的全部模型,再在“贴图烘焙设置”(3Dmax快捷键:数字键0)中点击“Render”开始渲染。(如有模型带alpha通道,需要提前显示通道效果)

jtgz14.jpg

5、将所有模型渲染完毕后,将模型坐标分别按max中心点坐标归零,分组导出FBX,保存到模型文件夹中。

注意:“坐标归零”步骤不可省,归零后会极大地方便我们在C²engine中的模型坐标配置。

步骤三:在C²engine中摆放模型并设置环境

1、打开C²engine,并将所需文件导入项目。

由于文件较多,建议在项目面板空白处右击选择“在资源管理器中显示”,打开项目所在文件夹后,将准备好的贴图(包括模型固有色贴图和后生成的光照贴图)以及模型资源复制至assets文件夹中。(为了项目条理清晰,建议分类放置对应文件夹中。如:可以将FBX模型文件放入model文件夹中,贴图文件放入picture文件夹中)
jtgz15.jpg
切换至C²engine后,在项目面板中点击Assets文件夹以刷新项目文件。

>>>点击查看更多导入/出资源方式

2、在主菜单—场景中选择“新建场景”,创建完成后,选择“场景另存为”选择保存路径并保存该场景。(建议保存时在demo文件夹下新建scene文件夹,并将该场景保存至scene文件夹中)

3、在项目面板中打开model文件夹,可以看到一个FBX模型文件(同名文件夹为系统自动解析生成,无需操作),我们只需直接将FBX模型拖拽至场景中。

jtgz16.jpg jtgz18.jpg jtgz17.jpg

4、在属性面板中将模型组的XYZ坐标均设置为0。(步骤二第5点中我们提到在3Dmax中导出时,要先“归零”。由于我们导出时是将各模型组的中心点坐标“归零”导出,所以,不管场景多大,有多少模型组,我们在C²engine中搭建场景时,将模型组拖拽至场景中后,只需将各模型组坐标设为(0,0,0)即可完成场景搭建。)

jtgz16.jpg

5、在 主菜单—窗口—灯光 中打开环境设置面板,根据3Dmax中的场景设置调整C²engine的环境光、天空盒以及雾化效果。(由于该例不需要设置天空盒和雾化效果,我们取消天空盒和雾化的勾选,仅设置环境光即可。)

jtgz21.jpg

>>>点击查看环境设置

步骤四:设置材质属性

1、在场景树面板中选择需要添加材质的模型(选择单个模型,依次添加材质)。可以看到属性面板已经挂载了一个与模型同名的材质球组件了,默认的材质类型为白模,我们选择“静态光照”类型。如:我们选择地上的石块模型(DrawCall_0094)

jtgz23.jpg jtgz27.jpg

2、在固有色贴图处添加模型对应固有色贴图,光照贴图处添加对应光照贴图(这里的光照贴图就是前面三要素中所提到的通过max灯光渲染生成的贴图)。(可以通过拖拽的方式将项目面板的贴图文件快速添加至对应位置)此时,场景面板中的石头模型如下:

jtgz22.jpg jtgz28.jpg

3、重复上述步骤,将所有模型均添加材质属性。此时,模型图如下:

jtgz24.jpg

4、不难看出,后衣摆处的破碎没有体现,我们需要给该模型材质球选择渲染模式——透明检测,使衣摆出现破碎效果。实际运用中,我们需要根据实际情况,合理选择材质属性。

jtgz25.jpg jtgz29.jpg

步骤五:保存场景、项目

1、在主菜单—场景中点击“保存场景”,完成场景的保存。

2、在主菜单—项目中点击“保存项目”,完成项目的保存。

至此,我们便完成了一个静态光照的demo制作。