当前位置: 首页 > news >正文

山东大学计算机图形学期末复习13——CG14上

CG14上

纹理映射的意义、原理与类型

一、动机篇:为什么要用纹理映射?
1.1 视觉真实感的追求(P2:The Quest for Visual Realism)
  • 模型 ➝ 模型+光照 ➝ 模型+光照+纹理的渐进式示意图清晰展示了纹理在视觉真实感中的作用。
  • 关键问题:“何时开始看起来真实?”——答案是:纹理映射。
  • 示例来源:Jeremy Birn 的作品展示了纹理对“真实感”提升的决定性贡献。

逻辑总结:几何模型和光照可提供基础立体结构,但缺乏表面细节,需纹理映射增强真实感。


二、结构篇:纹理映射的组成与分类
2.1 课程目标与映射分类(P3:Objectives)
  • 三种纹理映射方法
    1. 纹理映射(Texture Mapping):二维图像贴到三维模型表面。
    2. 环境映射(Environment Mapping):模拟镜面反射效果。
    3. 凹凸映射(Bump Mapping):通过修改法线模拟凹凸表面。
  • 两类映射策略
    • 前向映射:从纹理空间向模型投射(可能产生空洞,效率低)。
    • 后向映射:从屏幕像素向纹理查找坐标(现代图形硬件主流方式)。
  • 两类采样方式
    • 点采样:快速但易混叠(aliasing)。
    • 区域平均:质量好但计算复杂。

逻辑总结:纹理映射是一种灵活可扩展的技术框架,包括多个实现方式与策略,适用于不同视觉需求。


三、建模挑战篇:仅靠几何建模的局限性
3.1 几何建模的极限(P4:The Limits of Geometric Modeling)
  • 尽管现代显卡可高效渲染多边形,但:
    • 表面纹理难以用多边形真实重建。
    • 模型复杂度迅速上升,渲染开销变大。
3.2 橙子建模例子(P5-P6:Modeling an Orange)
  • 简化模型(球体)无法还原橙子的凹坑、纹理。
  • 高多边形模型虽可模拟细节,但效率低、维护难。
  • 解决方案
    • 拍照 ➝ 获得真实纹理图 ➝ 映射到简单球体模型上 ➝ 提高真实感。
    • 提出纹理映射技术的引入。
  • 进一步问题:颜色解决了,但凹凸呢?——提示后续需要凹凸映射(Bump Mapping)

逻辑总结:纯几何建模难以在真实感与效率之间兼顾,纹理映射提供了理想解决路径。


四、方法篇:三种纹理映射技术详解
4.2 纹理映射(Texture Mapping)
  • 定义:将 2D 图像贴到 3D 模型表面,提供颜色和图案信息。
  • 过程
    • 图像作为纹理存储颜色。
    • 定义几何模型每个顶点对应的纹理坐标 ( u , v ) (u,v) (u,v)
    • 渲染时插值并查找纹理颜色,赋值给片段。

逻辑总结:纹理映射通过将图像映射到模型上,提供细节和真实感,是现代渲染的核心技术。


4.3 环境映射(Environment Mapping)
  • 作用:模拟物体对周围环境的反射,如金属、玻璃等反光材质。
  • 原理
    • 准备一个全景环境贴图(如立方体贴图或球面贴图)。
    • 根据视角方向和法线方向计算反射向量。
    • 通过反射向量查询贴图中的颜色,赋值给像素。
  • 常见形式
    • 球面映射(早期方法)。
    • 立方体映射(现代 GPU 标准)。

逻辑总结:环境映射扩展了纹理映射的表达能力,模拟“反射光”来增强真实感。


4.4 凹凸映射(Bump Mapping)
  • 作用:模拟表面的凹凸起伏(如砖缝、皱纹),提升细节感。
  • 实现
    • 保持几何模型不变,仅修改片段着色时使用的法向量。
    • 通过**凹凸贴图(灰度图或法线贴图)**提供扰动信息。
  • 优势
    • 不增加三角形数量。
    • 增强真实感,适用于低多边形建模。
  • 注意
    • 只是视觉“欺骗”,不影响几何轮廓。

逻辑总结:凹凸映射在不改动几何模型的前提下,实现细节增强,是纹理映射的高级应用。


五、管线篇:纹理映射的实现阶段
5.1 映射实现位置(P12:Where does mapping take place?)
  • 纹理映射发生在渲染管线的片段处理阶段(Fragment Shader)
  • 前提:
    • 顶点处理与裁剪后,仅对可见部分执行纹理查找,效率更高
  • 技术优势
    • 结合 GPU 硬件加速;
    • 减少无效像素计算;
    • 支持并行查找与采样。
  • 可能包含内容
    • 渲染管线示意图(顶点 ➝ 裁剪 ➝ 光栅化 ➝ 片段着色 ➝ 帧缓冲写入)。

逻辑总结:纹理映射效率高、结构合理,易于整合到现代图形渲染管线,是图形硬件渲染的核心组件。

纹理映射(Texture Mapping)

一、纹理映射的动机与作用
1.1 视觉真实感的追求
  • 几何模型本身不包含表面细节。即使使用复杂几何建模(如建模橙子的凹点),也会导致巨大的多边形数目,计算成本高。
  • 纹理映射通过将二维图像“贴”在三维物体表面,极大提升视觉真实感:
    • 表面图案(如木纹、皮肤);
    • 颜色细节;
    • 材质感(配合法线贴图);
  • 示例:橙子建模中,用照片扫描得到的橙子纹理贴到简单球体上,实现高真实感 + 低几何复杂度。

二、纹理映射的技术框架
2.1 涉及的主要坐标系统
坐标系说明维度作用
纹理坐标(Texture Coordinates)(u,v) ∈ [0,1]²,归一化二维纹理图像坐标2D在纹理图中查颜色
参数坐标(Parametric Coordinates)用于曲面建模,如圆柱(θ,h)、球面(θ,φ)2D建模中间曲面
物体/世界坐标(Object/World Coordinates)三维空间中的实际点(x,y,z)3D模型变换与渲染
屏幕坐标(Window Coordinates)渲染后的2D像素位置2D最终输出位置
2.2 渲染管线中的位置
  • 纹理映射发生在片段着色阶段(fragment shader):
    • 每个片元(像素候选)具有插值得到的(u,v);
    • GPU根据(u,v)查找纹理图像,获取颜色并着色。

三、映射策略与映射函数
3.1 正向映射 vs 反向映射
正向映射(Forward Mapping):
  • 从纹理坐标 (s,t) → 表面坐标 (x,y,z):
    x = x ( s , t ) y = y ( s , t ) z = z ( s , t ) \begin{aligned} x &= x(s, t) \\ y &= y(s, t) \\ z &= z(s, t) \end{aligned} xyz=x(s,t)=y(s,t)=z(s,t)

  • 应用难点:

    • 纹理坐标空间到三维表面可能造成空洞扭曲
    • 渲染过程中难以控制每个屏幕像素是否覆盖。

在这里插入图片描述

反向映射(Backward Mapping):
  • 更符合片段着色器执行逻辑:

    • 每个片元对应模型上的(x,y,z);

    • 需要从(x,y,z)反查纹理坐标(s,t):
      s = s ( x , y , z ) t = t ( x , y , z ) \begin{aligned} s &= s(x, y, z) \\ t &= t(x, y, z) \end{aligned} st=s(x,y,z)=t(x,y,z)

  • 实现方式:

    • 对三角形的三个顶点预设纹理坐标;
    • 对应像素通过重心坐标插值获得(u,v)。

四、两阶段映射策略(Two-Part Mapping)

为解决复杂物体的映射难题,引入中间参数表面(如圆柱、球体、立方体):

  1. 纹理坐标 (u,v)中间参数表面(如圆柱);
  2. 中间表面坐标实际模型表面点 (x,y,z)

优点:

  • 中间表面具有已知、易定义的参数化;
  • 可大大降低纹理失真;
  • 常用于角色建模、地球贴图等。

五、典型参数化映射方法
5.1 圆柱映射(Cylindrical Mapping)

在这里插入图片描述

参数定义:
  • 圆柱高度为 h h h,半径为 r r r

  • 使用参数 ( u , v ) ∈ [ 0 , 1 ] 2 (u, v) ∈ [0,1]^2 (u,v)[0,1]2
    θ = 2 π u φ = v \begin{aligned} \theta &= 2\pi u \\ \varphi &= v \end{aligned} θφ=2πu=v

映射公式(纹理 → 圆柱):

将纹理坐标(u,v)映射到圆柱表面:
x = r cos ⁡ ( 2 π u ) y = r sin ⁡ ( 2 π u ) z = v h \begin{aligned} x &= r \cos(2\pi u) \\ y &= r \sin(2\pi u) \\ z &= v h \end{aligned} xyz=rcos(2πu)=rsin(2πu)=vh

反向映射(圆柱 → 纹理):

u = θ 2 π = tan ⁡ − 1 ( y / x ) 2 π v = z h \begin{aligned} u &= \frac{\theta}{2\pi} = \frac{\tan^{-1}(y/x)}{2\pi} \\ v &= \frac{z}{h} \end{aligned} uv=2πθ=2πtan1(y/x)=hz


5.2 球面映射(Spherical Mapping)

球面参数:

  • 使用球面坐标 ( θ , ϕ ) (\theta, \phi) (θ,ϕ),其中:
    • θ \theta θ ∈ [0, 2π](经度)
    • ϕ \phi ϕ ∈ [0, π](纬度)
映射公式(纹理 → 球面):

x = r sin ⁡ ( π v ) cos ⁡ ( 2 π u ) y = r sin ⁡ ( π v ) sin ⁡ ( 2 π u ) z = r cos ⁡ ( π v ) \begin{aligned} x &= r \sin(\pi v) \cos(2\pi u) \\ y &= r \sin(\pi v) \sin(2\pi u) \\ z &= r \cos(\pi v) \end{aligned} xyz=rsin(πv)cos(2πu)=rsin(πv)sin(2πu)=rcos(πv)

反向映射(球面 → 纹理):

u = θ 2 π = tan ⁡ − 1 ( y / x ) 2 π v = ϕ π = cos ⁡ − 1 ( z / r ) π \begin{aligned} u &= \frac{\theta}{2\pi} = \frac{\tan^{-1}(y/x)}{2\pi} \\ v &= \frac{\phi}{\pi} = \frac{\cos^{-1}(z/r)}{\pi} \end{aligned} uv=2πθ=2πtan1(y/x)=πϕ=πcos1(z/r)

极点问题:
  • ϕ ≈ 0 \phi \approx 0 ϕ0 ϕ ≈ π \phi \approx \pi ϕπ 处,纹理压缩严重;
  • 可采用多图切割或改用立方体贴图(见下)。

5.3 盒式映射(Box Mapping)

在这里插入图片描述

  • 将物体表面投影到立方体六个面
  • 每面采用正交投影纹理映射;
  • 映射关系(示例):
    • + x +x +x面:纹理坐标 ( u , v ) (u,v) (u,v) y , z y,z y,z
    • − x -x x面: ( 1 − u , v ) (1-u,v) (1u,v) y , z y,z y,z
    • 以此类推。
应用:环境贴图(Environment Mapping)
  • 将环境图像存储为立方体的六个面;
  • 根据观察方向投影到立方体面,查颜色。

5.4 多立方体映射(Polycube Mapping)
  • 将复杂模型分割为多个立方体(polycubes);
  • 每个立方体进行局部盒式映射;
  • 避免纹理失真,适合复杂拓扑结构;
  • 应用于:
    • 自动UV展开;
    • 程序化建模;
    • 高质量纹理转移。

六、进阶映射技术(简述)
6.1 凹凸映射(Bump Mapping)
  • 不修改几何表面;
  • 修改每个像素的法线方向
    • 使用法线贴图(normal map)或高度贴图(height map);
  • 与光照模型(如Phong、Blinn-Phong)结合,模拟细节凹凸。
6.2 环境映射(Environment Mapping)
  • 使用球面或立方体贴图模拟物体对环境的反射;
  • 应用于金属、玻璃等镜面物体。

七、纹理采样策略
7.1 点采样 vs 区域平均
方法原理优点缺点
点采样获取最近(u,v)点的颜色快速、简单锯齿、混叠
区域平均计算像素覆盖的纹理区域平均色平滑、抗锯齿开销大、复杂
7.2 显卡优化技术
  • 多重采样抗锯齿(MSAA)
  • 各向异性过滤(Anisotropic Filtering)
  • MipMap(多级纹理缓存):低分辨率版本用于远景,提升效率与质量。

相关文章:

  • 智能投影仪行业2025数据分析报告
  • 吉林省建筑工程专业技术人员职称评审实施办法
  • 牛客网 NC274692 题解:素世喝茶
  • 基于亚博K210开发板——安全散列算法加速器测试
  • Windows逆向工程提升之PE文件的基本概念
  • YOLOV3 深度解析:目标检测的高效利器
  • 大语言模型怎么进行记忆的
  • TDengine 安全部署配置建议
  • 人工智能、机器学习与深度学习:概念解析与内在联系
  • ALTER CONVERSION使用场景
  • 树莓派(Raspberry Pi)中切换为国内的软件源
  • CSS- 4.6 radiu、shadow、animation动画
  • Python 与 Java 在 Web 开发中的深度对比:从语言特性到生态选型
  • GPT-4.1特点?如何使用GPT-4.1模型,GPT-4.1编码和图像理解能力实例展示
  • 【SPIN】PROMELA并发编程(SPIN学习系列--3)
  • 【Dify 前端源码解读系列】聊天组件功能分析文档
  • 解决Windows磁盘管理中因夹卷导致的无法分区问题
  • go 数据类型转换
  • LeetCode-滑动窗口-找到字符串中所有字母异位词
  • 【力扣刷题】LeetCode763-划分字母区间
  • 人民日报:不能层层加码,要层层负责
  • 六旬老人举报违建后遭蒙面袭击续:海南陵水县住建局已暂停俩房产项目网签
  • 探月工程鹊桥二号中继星取得阶段性进展
  • 【社论】进一步拧紧过紧日子的制度螺栓
  • 这位中国电影早期的全能奇才,90年前唱响国歌
  • 一周人物|收藏家瓦尔特捐出藏品,女性艺术家“对话”摄影