从品牌网站建设到网络营销策划,从策略到执行的一站式服务
本文继续上一节
5.3 OpenGL内置光照模型
OpenGL光照分为三种,Ambient(环境光),Diffuse(漫射光)和Specular(镜面反射光)。
Ambient 不依赖于光源的方向。光线在物体表面上向各个方向上均匀泛射,场景中的物体都会泛射光,这些泛射光又会照射到其他 物体上继续被泛射,直到光子能量耗尽为止,这样整个场景中散布着这样的泛射光。可通过设置一个颜色常量来表示环境光。Ambient = a constant。
Diffuse 只依赖于光源的方向和法线的方向。因此为只和表面与光线入射夹角有关的光线。我们之所以能看到物体,就是因为物体将入射的光然后向各个方向反射(所以称之为漫反射)。物体的漫反射材质属性对物体的颜色起着决定性作用。Diffuse = I*cosΘ,Θ为入射角角度,也就是光来的方向和法线的夹角。
Specular依赖于光源的方向,法线的方向和视角的方向。不但和表面与光线入射夹角有关,而且还和观察角度有关的光线,并且根据表面光滑程度,呈现不同亮度,越光滑,越容易产生高光区域。在 OpenGL 中,镜面光的强度可通过光滑度(shininess)来调节。
Specular = I*cossφ ,其中指数s就是光滑度。1/s就是粗糙度(Roughness)。
看一下效果图:
下面介绍一下三种不同的光源。
Directional Light 平行光(方向光),可以改变角度。可以联想太阳光。
Point Light 点光源(由一个点向四周发射光源),可以改变位置。可以联想灯泡。
Spot Light 聚光灯(聚光/锥光)。比较耗费资源,可以改变位置和角度。可以联想手电筒。
再看一下光源位置不同造成的不同效果:
左边是点光源在人眼位置,右边为点光源在坐标原点。
5.4 使用OpenGL光照
教大家一个简单的运用光照的代码:
然后再设置全局光照信息:
这样有个好处就是可以轻松控制光的强度,比如这里的0.3f。
设置材质:
设置光源特性:
可以将这些代码整合为以下代码,放到方法体里面去:
具体怎么使用,还需要各位参见Github我们的源码再实战一下。才能真正体会到光照这一块的用法。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图