zoukankan      html  css  js  c++  java
  • 关于Unity中的光照(五)

    Mobile Diffuse

    Unity自带的一种shader,用的比较多,性能还可以。我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区别

    1: 漫反射着色器, 最简单的3D着色模式;光照在物体上,漫反射就是原本是什么样的颜色,就显示什么样的颜色。
    2: 模型顶点,到顶点的纹理坐标,到着色的时候选择纹理上的颜色着色;
    3: 在光照之前,你把纹理本来的颜色着色上去,参与光照,漫反射部分;

     

    Standard

    Unity自带的一种shader,使用后要把Main Maps---->Albedo的颜色调到最亮,是一种比较自然的shader

    1: 基于物理学的着色是用模拟现实的方式呈现出材质和灯光之间的相互作用, 基于物理学的着色器给用户营造出连续性。;
    2: 为了表现出真实的灯光, 标准着色器模仿了能量存储(物体反射的光源不大于它接收的光源), Fresnel反射(视线不垂直于物体表面时夹角月小,反射越明显), 表面遮蔽;
    3: Stander着色器的参数:
    Rendering Mode: 四种渲染模式;

      (1) Opaque模式:这种模式代表该着色器不支持透明通道, 物体是完全不透明的;
      (2) Cutout模式:这种模式下支持透明通道,要么就透明,要么就完全不透明,图片内容是否透明,由Albedo的Alpha值和Alpha Cutoff决定的。适合制作叶子,草灯,带有透明通道的图片但不希望出半透明效果的材质;
      (3) Fade模式: 褪色模式,改模式下可以操作Albedo的Color的Alpha值来操作材质的透明度,比较适合做物体渐渐淡出的动画效果, 当Alpha值降低了以后,表面的高光和反色也会变淡;(经常用于游戏中怪物死亡的时候淡出效果)

        
      (4) Transparent模式: 这种模式下的材质通过Albedo的Color的Alpha值来操作材质的透明度,当物体为半透明的时候,表面的高光和反色不会变淡;

    Albedo: 漫反射纹理图,也可以设置颜色和透明度, 纹理颜色 + 调和颜色;
    Metallic: 金属性,值越高,发射效果越明显;
    Smoothness:影响反射时表面的光滑程度,值越高,反射效果越清晰;
    Specular: 高光。颜色可以自行设置;
    Normal Map: 法线贴图;

      使用:1.把法线的纹理贴图的Texture Type设置为Normal Map  2.在材质的Normal Map属性里选择法线纹理贴图

        

    Height Map: 高度图, 通常是灰度图;
    Occlusion: 环境遮罩贴图。

      遮罩贴图,是一种模型的表面应该接受多少间接反射的图片,一个表面凹凸不平的物体,在其凹下的地方应该接受较少的间接光照,遮挡图是一张灰度图,白色表示完全的间接照明,黑色表示完全不接受间接照明;

      使用:1.材质贴好纹理和设置好shader  2.把res下的lowpoly robot01DiffuseMap.png拖进材质的Occlusion属性中,看起来更加真实

      遮罩前    遮罩后 

    Emission: 自发光属性,开启后类是于一个光源,可以调节GI模式;
    Detail Mask: 细节遮罩贴图。当某些地方不需要细节图,可以使用遮罩图进行设置。
    Tiling: 贴图的重复次数;
    Offset: 贴图的偏移量;
    Secondary Maps: 二级细节贴图,可以让主贴图Main Map更加精细;

      又叫Detail Map,材质的次级贴图,又叫细节贴图,它的作用是展示第一组贴图中没有显示的材质细节效果, Unity允许用户在一个材质上添加一个次级的漫反射贴图和法线贴图;

     

    光探头

    1:光照贴图都是应用于静态物体,如果一个非静态物体在烘培好的Lighting map的场景中移动,当它挡住某个物体的光照的时候,烘焙好的这个物体依然显示光,而这个非静态物体表面也没有光照,很突兀。

     这样不能很好的融合到烘培好的场景中,最理想是实时计算,但是达不到理想的效果,针对这种提出光探头;
    2: Light Probes 的原理是在场景中放上若干采样点,收集采样点的周围的光暗信息;然后在附近的几个点围城的区域内进行插值,将插值结果作用到动态物体上;
    3: Light Probes应用细节:
      (1)没有必要在光影无变化的区域内布置多个采样点;
      (2)在动态物体的活动空间来进行部署,不必要全部空间都部署;
      (3) 在我们的一个节点上,添加Light Probes Group组件,来进行部署光d探头
    4: 在物体的Mesh Renderer组件下面的Light Probes表示是否接受光探头的影响
      Light Probes 选项的3个:
      off(关闭)
      Blend Probes(默认)反射探针将被启用。
      Use Proxy Volume(光照探头代理)(只要指定的光照探头才会有用)

    光探头实例

    1.创建Unity工程和文件目录

    2.场景一个静态场景,加一个点光源

    3.设置点光源光照模式为baked,要烘焙的静态物体为static,对静态物体进行烘焙

    4.放进一个动态物体在点光源附近移动,发现很突兀

    5.再创建一个空节点,放在点光源的中心,给空节点加一个探头组件Light Probes Group,这时候就发现原来的非静态物体的表面有了光照效果,但是光照强度不会随着距离的变化而变化

    6.为了解决光的强度的变化,点击Light Probes Group的Edit Light Probes,再点击Add Probe,移动到距离非静态物体比较近的点,再点击Duplicate Selected

    7.重复第6点,只要在不同的光强度区域布置光探头,这样非静态物体经过的时候就会显示不同强度的光照。

  • 相关阅读:
    团队选题报告
    结对编程作业服务器端总结
    结对编程作业服务器端系统设计、玩法和接口简要
    第一次团队展示
    第一次个人编程作业技术助教总结
    第一次个人编程作业输入输出格式及注意事项
    第一次博客作业
    课程总结
    团队作业-个人总结
    团队作业总结
  • 原文地址:https://www.cnblogs.com/HangZhe/p/7253992.html
Copyright © 2011-2022 走看看