• 《The Cg Tutorial》阅读笔记——环境贴图 Environment Mapping


    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4969956.html 


    环境贴图 Environment Mapping

    一、简介

    环境贴图是一种用于模拟高度反射物体表面反映周围环境的技术,使用环境贴图技术的前提条件是假定环境到物体的距离无限远。

    由于环境贴图只关注方向而忽略了位置,因此它在平坦反射表面上的效果很不真实,相对的,它在曲面上可以取得较好的视觉效果。

    二、立方贴图纹理 Cube Map Textures

    1. 简介

    立方贴图纹理由六张恰好构成一个立方体的正方形纹理图像组成,它们形成了一个全方位图像,使我们能够利用它们实现环境映射。

    访问立方贴图纹理需要使用一个表示3D方向向量的三元纹理坐标。将这个纹理坐标看作一个从立方体中心发射的射线,它必然会与立方体六个面中的一个相交,而立方纹理贴图将会返回交点过滤后的色彩。

    2. 生成立方贴图纹理

    【方法一】

    在坐标原点使用摄像机向XYZ轴正负方向各拍一张快照,摄像机的取景角度必须为90度,长宽比必须为1:1。

    【方法二】

    使用其他电脑软件生成或直接拍摄真实照片。

    三、数学表达

    1. 如何计算反射向量 Reflected Vector

    R = I - 2 * N * (N · I)

    • R为反射光方向的单位向量
    • I为入射光方向的单位向量
    • N为物体表面法线的单位向量

    2. 如何计算折射向量 Refracted Vector

    1) 折射(斯奈尔)定律 Snell's Law

    η1sinθI = η2sinθT

    • η1为入射光所在材质的折射率
    • θI为入射光与折射表面法线的夹角
    • η2为折射光所在材质的折射率
    • θT为折射光与折射表面法线的夹角

    2) 常见材质的折射率

    材质

    折射率

    真空       Vacuum

    1.0

    空气       Air

    1.0003

    水           Water

    1.3333

    玻璃       Glass

    1.5

    塑料       Plastic

    1.5

    钻石       Diamond

    2.417

    注意

    不同类型的玻璃有不同的折射率,1.5是普通窗户玻璃的折射率。它也是大部分塑料的近似折射率。

     

    3) 计算折射光方向的数学公式

    T = (cosT2 > 0 ? 1 : 0) * (RefractedRatio * I + (RefractedRatio * CosI - CosT) * N)

    • RefractedRatio为入射光所在材质折射率与折射光所在材质折射率的比值

    RefractedRatio = η1 / η2

    • I为入射光的方向向量
    • N为物体表面法线的方向向量
    • CosI为入射光所在直线与物体表面法线所在直线的夹角余弦值

    CosI = -I · N

    • CosT2为折射光所在直线与物体表面法线所在直线的夹角余弦值的平方

    CosT2 = 1 – RefractedRatio2 * (1 – CosI2)

    • CosT为折射光所在直线与物体表面法线所在直线的夹角余弦值

    CosT = sqrt(|cosT2|)

    四、菲涅尔效应与色散

    1. 菲涅尔效应 The Fresnel Effect

    1) 定义

    当光通过两种材质之间的界面时,部分发生反射,部分发生折射的现象被称为菲涅尔效应。

    用于量化菲涅尔效应的菲涅尔方程(The Fresnel equations)是非常复杂的,因此,在使用程序模拟菲涅尔效应时通常采用经验近似方程,在得到良好模拟效果的同时能够显著减少副作用。

    2) 菲涅尔方程的近似等式:

    ReflectionCoefficient = max(0, min(1, Bias + Scale × (1 + I · N)Power))

    CFinal = ReflectionCoefficient × CReflected + (1 – ReflectedCoefficient) × CRefracted

    方程中隐藏的概念的是:当入射光方向的单位向量I与表面法线的单位向量N几乎重合(处于同一直线但方向相反)时,反射光强度几乎为0,大部分光线都被折射了;当IN充分发散时,所有的光线都会被反射。

     

    2. 色散 Chromatic Dispersion

    1) 定义

    折射不仅取决于表面法线N、入射光线I以及折射率RefractedRatio,还会受到入射光波长的影响,这种现象被称为色散。

    2) 数学实现

    在计算折射时,为RGB三个通道分别设置不同的折射率,其中蓝光折射率最高,绿光其次,红光最低。

  • 相关阅读:
    一、汇编基础知识
    PHP RabbitMQ消息队列演示代码
    PHP CentOS下安装PHP及部署ThinkPHP
    MySQL CentOS下安装MySQL
    ThinkPHP 对接支付宝支付接口
    ThinkPHP 获取当前页面完整的URL地址
    前端 Validform.js属性,用法及Ajax提交简介
    PHP 配置Xdebug调试工具
    ThinkPHP 原生分页功能改进,更好用更美观
    ThinkPHP 使用第三方phpmailer库发送邮件
  • 原文地址:https://www.cnblogs.com/dbylk/p/4969956.html
Copyright © 2020-2023  润新知