×

[SceneKit专题]8.Lights灯光

96
史前图腾
2017.04.04 21:25* 字数 1223

说明

本系列文章是对<3D iOS Games by Tutorials>一书的学习记录和部分翻译,此书对应的代码地址:https://github.com/XanderXu/3D-iOS-Games-by-Tutorials-code
系列文章目录:http://www.jianshu.com/p/fd32aa0d896a

surface normal表面法线

表面上某一点的法向量(Normal Vector)指的是在该点处与表面垂直的方向。对于平面,其上各点的法向是一样的,统一为这个平面的法向。对于曲面,各点具有不同的法向量.
正确设置网格面上点的法向,对几何体在光照等情况下显示得更真实,这样就可以减少顶点数量,提高渲染速度

QQ20170404-204747@2x.png
QQ20170404-204747@2x.png
  • Normal vectors(法向量):红色的线,垂直于表面
  • Light source vector(光源向量):黄色的线
  • Surface shading(表面着色):每个面的颜色都不同,是计算光源向量和表面法线的夹角,夹角小则表面亮,夹角大则表面暗.
  • View source vector(视点源向量):假想的从相机发出的向量.
  • Surface culling(表面剔除):只有面向相机的表面才是可见的,这样渲染引擎就能决定哪个表面可以剔除不渲染.

Sphere nodes球体节点

QQ20170404-212339@2x.png
QQ20170404-212339@2x.png
QQ20170404-212352@2x.png
QQ20170404-212352@2x.png
QQ20170404-212403@2x.png
QQ20170404-212403@2x.png

球体有两种,但实际,两者的不同就在于Geodesic复选框有没有选中,可以互相切换

  • Radius(半径):设置球体的尺寸.
  • Segment count(分段数):Scene Kit是使用很多小多边形连结在一起形成网格来模拟曲面的.分段数控制着生成球体时的片段数量,片段越多,球体越光滑,多边形数量也越多,当然渲染时花费的时间也越长,可以设置小一些.
  • Geodesic(测地线):影响两种球体的多边形风格生成.默认情况下,表面是由简单的小四边形组成,但是测地线球体使用相同面积的三角形来组成网格


    QQ20170404-212427@2x.png
    QQ20170404-212427@2x.png
  • Diffuse(漫反射):被光线照亮后漫反射出的颜色.
  • Specular(镜面反射):控制材料反光,闪亮属性,白色则强烈反光,黑色昏暗不光滑.


    QQ20170404-212436@2x.png
    QQ20170404-212436@2x.png

    材料检查器中找到setting区

  • Shininess(镜面光洁):该值越小,表示材质越粗糙,点光源发射的光线照射到上面,也可以产生较大的亮点。该值越大,表示材质越类似于镜面,光源照射到上面后,产生较小的亮点。
  • Fresnel(菲涅耳):如果你站在湖边,低头看脚下的水,你会发现水是透明的,反射不是特别强烈;如果你看远处的湖面,你会发现水并不是透明的,但反射非常强烈。这就是“[菲涅尔]效应”。

Light nodes灯光节点

QQ20170404-212212@2x.png
QQ20170404-212212@2x.png
  • Omni light(泛光灯):从一个点向所有方向发光,就像太阳一样.但是在3D游戏中模拟太阳时,泛光灯并不是最好选择,因为太阳光到达地球时,更接近于平行光.一般该类型适用于烛光或者灯泡光.
  • Directional light(平行光):带有方向的平行光,一般用来模拟到达地面的太阳光.
  • Spot light(点光源):从一个点发出的有方向的光,呈圆锥形.适用于聚光灯,比如直升机上的探照灯.
  • Ambient light(环境光):环境光控制场景中的全局明亮程度.也可以理解为用来控制场景中阴影的黑暗程度.

Three point lighting三点光照法

让3D图像更真实的秘密就是使用真实世界的光照技术,比如在摄影办很流行的三点光照系统.


QQ20170404-212231@2x.png
QQ20170404-212231@2x.png
  • Key light(主光源):最主要的光源,从正面照亮物体.
  • Back light(背光源):位于物体后方,和主光源相对的位置.主要目的是形成边缘光效果,使物体边缘高亮.
  • Fill light(补光光源):和主光源垂直,主要目的是控制物体阴影的黑暗程度.
QQ20170405-233421@2x.png
QQ20170405-233421@2x.png
  • Mode(模式):Dynamic(动态的)或者Baked(烘焙的).光源处理移动或者被照亮的节点会移动,就使用动态Dynamic模式.当使用外部3D创作工具创作光照贴图,并将光照效果烘焙到场景中的物体纹理时,可使用烘焙模式.
  • Color(颜色):光的颜色
  • Attenuation(衰减):控制光源在距离上的强烈程度.小于Start距离的是完全100%光照,大于End距离的是无光照,中间按Falloff衰减

看图理解三点光照系统,Front light和Back light是Omni类型,环境光是Ambient类型.


QQ20170405-234533@2x.png
QQ20170405-234533@2x.png
SceneKit+ARKit
Web note ad 1