zoukankan      html  css  js  c++  java
  • 《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三个通道分别设置不同的折射率,其中蓝光折射率最高,绿光其次,红光最低。

  • 相关阅读:
    leetcode 18 4Sum
    leetcode 71 Simplify Path
    leetcode 10 Regular Expression Matching
    leetcode 30 Substring with Concatenation of All Words
    leetcode 355 Design Twitte
    leetcode LRU Cache
    leetcode 3Sum
    leetcode Letter Combinations of a Phone Number
    leetcode Remove Nth Node From End of List
    leetcode Valid Parentheses
  • 原文地址:https://www.cnblogs.com/dbylk/p/4969956.html
Copyright © 2011-2022 走看看