淘先锋技术网

首页 1 2 3 4 5 6 7

LearnOpenGL CN的教程非常有价值。

基础光照

我们看到的物体的颜色,是由物体本身的“颜色”属性和光照共同作用决定的。因此,将规范化的物体颜色和光照颜色相乘,就能得到我们观察到的颜色。我们可以通过构建光照模型,处理物体在特定光照下的效果。

冯氏光照模型主要包括3个分量:环境光照ambient、漫反射光照diffuse和镜面光照specular。环境光照起到类似“天空光”的作用,给物体一个基础的常量光照,让它永远有颜色。漫反射光照模拟光源对物体的方向性影响,是该光照模型中最显著的分量,与光照射物体的角度有关。镜面光照就是所谓的“高光”,它与光的方向、物体的法向量有关,也与观察的方向有关。我们用反光度shininess表示反射光的能力,反光度越大,则高光点越小。

材质与贴图

物体的环境光照、漫反射光照、镜面光照、反光度等元素,共同定义了物体的材质,材质能够告诉我们,当特定的光照射在物体上时,它应该呈现怎样的颜色。

一个物体的不同部分往往具有不同的材质属性,用一张纹理图像记录下各部分的某种属性,就是光照贴图。如法线贴图记录了物体各点应该呈现的平面的法线(而非被贴图的static mesh实际上的表面法线),如(0, 0, 1)就表示该平面完全指向z轴,因为各法线往往接近z轴方向,所以大多数法线贴图都是偏蓝色的。法线贴图能更好地模拟物体的凹凸效果。

制作材质

基本思路是,将纹理映射到物体上(UV Tilling),并利用各种贴图赋予物体不同的属性。在此基础上可根据需要添加各种效果,如需要污渍就叠加一张污渍贴图、需要水流就让贴图定向运动等。

Demo总结

  1. 通过两张贴图以不同速度偏移,为物体添加更为丰富的细节。
  2. 制作水流、玻璃等透明物体时,应该将对应的Blend Mode和Lighting Mode改成半透明的。
    在这里插入图片描述
    在这里插入图片描述
  3. 当我们想让物体表面看起来“起伏”时,可以用使用WorldDisplacement。
    在这里插入图片描述
  4. 细分曲面Tessellation可以让物体呈现更多的细节,当然,运算量也会相应地加大。我们可以在Tessellation Multiplier中设置曲面细分的程度。
    在这里插入图片描述
  5. Fresnel节点帮助构建半透明效果。设置的Exponenth参数越大,则物体越透明。
    在这里插入图片描述
  6. 法线贴图的混合叠加不能直接相乘Multiply,而应该使用BlendAngleCorrectedNormals节点。
    在这里插入图片描述
  7. Lerp节点表示,根据Alpha的信息,用A和B计算得一个线性插值。如图中示例的意思是,根据Alpha所连的噪声图,输出一张新图,新图的颜色介于A和B之间。在这里插入图片描述