发布时间 : 2019-12-02
零基础了解3D游戏开发,是一件不容易的事。我们将分几部分为大家细化3D游戏开发的每个环节,希望对你了解3D游戏开发有些许帮助。
灯光、阴影、反射光
光源是3D场景中不可缺少的重要组成部分,网格和纹理决定了物体的形状和外观,光源则可以照明、可以产生阴影、还可以影响场景环境以及3D模型的颜色、亮度、氛围等等。
3D中的光源就是灯光,其它如泛光、环境光等都是光效,而非光源。3D灯光有三种, 平行光(DirectionLight),点光(PointLight),聚光(SpotLight),LayaAir引擎不仅支持这些光源的任意类型,还支持在同一场景下任意添加多个不同类型的光源。下面简单介绍一下这三种光的区别。
平行光是一种模拟大自然太阳光的灯光,光源来自无穷远的位置,来自光源的光线始终都是平行的且没有衰减。引擎中可设定光源方向,用于给全场景照亮。
点光是一种以光源点为中心,向四周呈发射状的光源,光源点位于3D空间中的某个位置。类似于现实中的蜡烛光、篝火、家用电灯等发光的方式,这种光拥有照射范围和衰减半径。光照范围之外的地方则处于无光的黑暗之中。
聚光与点光类似,都属于位置光,也是位于3D空间的某个位置,也有照射范围和衰减半径,但是,与向四周发散的无方向点光不同,聚光则拥有光源方向,是一种呈锥形角度的光源,类似于现实中的手电洞、舞台聚光灯等光源效果。
阴影是灯光照射模型时产生的, 实时阴影随着灯光角度、灯光强度、模型位置等变化而变化。能产生更加强烈的立体感与真实感。
反射光,是指光源在照射到3D模型上,反射产生的光效。为了模拟自然反射现象,根据不同材质,引擎对反射光会使用不同的光照模型,比如,BlinnPhong材质中使用了漫反射和镜面反射模型。我们简单来理解一下两者的差异。
引擎中的漫反射主要是模拟材质表面粗糙不平的光学反射效果,理想的漫反射材质表面是完全不光滑且没有光泽的,当光源照射到这种材质上,呈现出发散的反射效果。
引擎中的镜面反射用于模拟光滑水平面的光学反射效果,是一种有方向反射,其反射方向以反射平面的法线为中心与入射方向的夹角对等。理想的高光反射材质是表面完全光滑的,比如像镜子一样。镜面反射常用于闪闪发光的视觉效果,且会产生高亮的点状光斑,所以镜面反射有的时候也叫镜面高光,如果LayaAir文档材质篇中提到高光颜色或者高光贴图,我们要能理解,这是指针对镜面反射效果的高光颜色和高光贴图。
基于漫反射和镜面反射的光学现象,引擎中使用了多个光照模型,用于模拟自然光中的反射现象。本篇先揭开一点。暂且先有一个初步的认知。我们继续来了解一些其它与光相关的概念。
下一部分,上海博思游戏学校将为你介绍3D游戏开发中的加色法、环境光、泛光、光照贴图,敬请期待。