• 资料
  • 正课
    • 光照模型
      • 定义
        • 也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而言,光照模型分为两类:一种是基于物理理论的,另一种是基于经验模型的
          • 基于物理理论的光照模型
            • 偏重于使用物理的度量和统计方法,效果非常真实,但是计算复杂,实现起来也较为困难(PBR模型)
          • 基于经验的光照模型
            • 是对光照的一种模拟,通过实践总结出简化的方法,简化了真实的光照计算,并且能达到很不错的效果
      • 为什么需要
        • 现实世界的光照是极其复杂的,而且受到诸多因素的影响,有限的计算能力无法完全模拟。使用简化的光照模型对现实的情况进行近似,是的计算处理起来会更容易,并且效果更符合需求。
      • 发展
    • 局部光照模型
      • 定义
        •  
          • 只考虑光源的影响,不考虑光线多次反射
          • 全局光照=直接光照+间接光照
      • 分类
        • 漫反射项
          • 定义
            • 光会被均匀的反射到不同的方向
            • 漫反射过程中,光线发生了吸收和散射,所以颜色和方向发生了改变
          • 计算
            • Lambert
              • 光的反方向点乘法线方向,就是光方向在法线方向上的分量大小,通过这个计算结果去判断物体表面的受光程度
              • Lambert余弦定理
        • 高光项
          • 定义
            • 光在光滑物体的表面没有发生反射,直接折射,光的能量没有发生改变,但是光的方向发生了变化
            • 素描基础中的三大调五大面
          • 计算
            • phong和blinn-phong
              • 庄懂老师的第4课
              • phong
                • 根据光的可逆性,去计算视觉方向在法线方向的折射反向与光的反方向的相似程度
              • blinn-phong
                • 根据光的可逆性,去计算光的反方向和视觉的反方向之间的半角方向与法线方向的相似程度
            • 光泽度closs的影响
              • 定义
                • 光泽度是在一组几何规定条件下对材料表面反射光的能力进行评价的物理量,具有方向选择的反射性质。
        • 环境光项
        • 自发光
      • 光照效果
    • 经典光照模型
      • Lambert模型
        •  
          • 基于Lambert余弦定理构造出的模型,只计算了漫反射部分
        • 代码部分解析
          • 可以看到Lambert模型中只返回了漫反射(diffuse)
          • 再看一下diffuse是什么组成的
          • 第一项为主光源的入射光颜色
          • 第二项为漫反射材质的颜色
          • 第三项 法线方向和光照方向的点积(cosθ=n·l)
      • Phone模型
        •  
          • 用环境光照来代替间接光照
          • Phong模型的算法:
          • Phong = Pow(dot(v,r),_gloss)
        • 代码部分解析
          • 计算反射光方向,用着色器自带的reflect函数计算。注意:这里的光照方向是指往外的方向,所以要取反。
          • 高光部分需要的反射方向(r)和观察方向(v)的余弦值(这里cos等于两者点积)
          • 观察/视线方向如下:通过相机位置减去顶点像素点位置获得(世界坐标下做的运算)
          • 漫反射部分已经在上边Lambert模型中计算完成
          • 计算高光部分=入射光的颜色 * 高光材质颜色 * (v·r)gloss
          • pow函数:pow(x,y) ->x的y次方
          • 环境光:
          • 环境光量(Unity的一个宏)* 漫反射材质
          • 最终效果:color=漫反射+环境光+高光
      • Blinn-Phone模型
        •  
          • 对Phong模型进行了改进,不用反射向量来计算高光
          • 关键:引入了半程向量h
          • 将高光部分的计算改为了法线(n)和半程向量(h)的点积
          • 指数依然是gloss(GAMES101中的p指数)
        • 代码部分解析
          • 半程向量的计算:光照方向和观察方向相加,再归一化
          • NdotH:就是半程向量和法线向量的夹角的余弦。得到高光方向
      • Phong模型和Blinn-Phong模型的区别
        •  
          • 总体来说就是Blinn-Phong计算更简单
          • 特殊情况:Phong模型中,材质反光度很低时,一部分高光的反射向量和观察方向夹角超过90°,就会产生高光缺失、断层的效果。
      • Gourand模型
        •  
          • 面数比较大,顶点数比较多,远处看,尚可
          • 拉近看,模型面明显
        •  
          • 逐顶点计算
          • 镜面高光效果差
          • 补充:对应的着色频率:Gouraud shading(逐顶点)算出顶点法线,然后插值
      • Flat模型
        •  
          • 每个面都只有一种颜色
          • 补充(对应的着色频率:Flat shading):两个边做叉积→三角形的法线
      • 展示
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐