• 图形学 - 纹理的应用


    1.环境贴图

    环境贴图(Environment Map)指的是环境中四面八方的情况。可以使用纹理来描述环境光的样子。我们假设环境光来自于无穷远处,没有深度意义。环境光纹理可以看作一个光滑镜面的球表面在环境中所记录的信息。我们需要将球表面展开成一个平面,可以使用两种展开方式:

    在这里插入图片描述

    1.1 墨卡托投影

    墨卡托投影法(Mercator Projection):通过将球面映射到一个平面上,我们可以使用墨卡托投影法。墨卡托投影法应用于目前地球仪的投影。它的特点是靠近南北极的地方会发生较大的畸变,这不是一个均匀地描述。
    在这里插入图片描述

    1.2 立方体映射

    立方体映射(Cube Map):我们为光滑球定义一个包围盒,将球的平面投影到立方体的六个平面上。这样做就可以得到 6 张纹理,并且畸变比较小。但是在计算纹素时需要计算球面上的点对应哪一张纹理,判断点和方向的位置关系。
    在这里插入图片描述

    2. 凹凸贴图

    凹凸贴图是指用纹理的方式得到物体表面凹凸不平的感觉,相比于直接通过做出物体凹凸不平的方式,这种方法更加的简单。对于任何一个点,我们只需要改变这个点的法线方向就可以表达出这个点高度的变化。因此这个贴图也被称作法线贴图(Bump mapping)。纹理上的点定义的是点高度的移动,通过纹理上信息我们可以求出新的法线方向。凹凸贴图实际上改变了shadingPoint的法线方向,再加上光线的作用(bling-phong), 凹的地方会显得暗但,凸的地方较为明亮,通过这种光线的作用来模拟出凹凸不平的效果

    在二维的情况下,我们假设原物体是一条直线,原始法线方向为 (0, 1)。对于任意一个点 𝑝,我们定义𝑝 点的导数是 𝑑𝑝 = 𝑐 ⋅ [ℎ(𝑝 + 1) − ℎ(𝑝)]。常数 𝑐 定义了凹凸贴图对于法线的影响。那么该点切线的方向是(1, 𝑑𝑝)。法线的方向和切线的方向成 90 度角,法线的方向向量是 (−𝑑𝑝, 1) 正则化后的结果。
    在这里插入图片描述
    推广到三维情况,对于一个原始法线是 (0, 0, 1) 的平面,我们在 u 方向和 v 方向上各做一次求导,结果是 𝑑𝑝/𝑑𝑢 = 𝑐1 ⋅ [ℎ(𝑢 + 1) − ℎ(𝑢)], 𝑑𝑝/𝑑𝑣 = 𝑐2 ⋅ [ℎ(𝑣 + 1) − ℎ(𝑣 )]。法线的方向是 (−𝑑𝑝/𝑑𝑢, −𝑑𝑝/𝑑𝑣, 1) 的正则化结果。
    对于任意方向的原始法线,我们都可以先按照局部坐标系计算法线后通过变换变换到世界坐标系上。
    除了凹凸贴图之外,还有另外一种贴图称作位移贴图。位移贴图会移动所有顶点位置。因此使用顶点贴图的时候模型三角形分的越细越好。凹凸贴图并没有实际改变物体的形状,所以在物体的边上依旧可以看到光滑的曲线。

    在这里插入图片描述
    当然,贴图可以推广到三维空间,我们可以使用三维贴图。计算三维空间中任意一个点对应的纹理。

    3.阴影贴图

    贴图还可以直接加入一些阴影,直接计算好贴在纹理上,这样会使得阴影计算变得很快。纹理可以记录一些已经计算好阴影的信息。

  • 相关阅读:
    【ACM程序设计】动态规划 第二篇 LCS&LIS问题
    HDLbits exercises 2 (MODULES节选题)
    [spring学习]12、JdbcTemplate常见增删改查操作
    在前端设计中,子元素的基线和父元素的基线分别是什么意思?并利用Bootstrap的类align-items-baseline实现子元素在其父容器内基线对齐。
    亚马逊云科技 Lambda 运行selenium
    30 Python的matplotlib模块
    elementui表单的验证问题
    30岁+文转码程序媛求职路复盘:也算是逆袭了!
    深入JS 中三类循环原理和性能
    centos防火墙firewall-cmd限定特定的ip访问
  • 原文地址:https://blog.csdn.net/weixin_46773434/article/details/127747045