【三维基础】图形学中的几个空间及其变换顺序详解

图形学中涉及到多个坐标空间,这些空间之间的变换是图形渲染中的核心部分。下面是一些常见的图形学空间及其变换顺序:

  1. 对象空间(Object Space)

    • 这是模型的原始坐标空间,模型的顶点数据是在这个空间中定义的。
    • 变换:通常通过模型变换(Model Transformation)来改变模型在对象空间中的位置、旋转和缩放。
  2. 世界空间(World Space)

    • 模型在场景中的位置,旋转和缩放都是在世界空间中定义的。
    • 变换:世界变换(World Transformation)。
  3. 观察空间(View Space 或 Camera Space)

    • 这是从相机视角看到的场景。
    • 变换:视图变换(View Transformation)或摄像机变换。
  4. 裁剪空间(Clip Space)

    • 在这里进行透视除法,得到规范化设备坐标。
    • 变换:透视变换(Perspective Transformation)。
  5. 规范化设备坐标空间(Normalized Device Coordinates,NDC)

    • 所有的顶点坐标都被映射到[-1, 1]的范围内。
    • 变换:规范化。
  6. 屏幕空间(Screen Space)

    • 最后一步变换,将NDC坐标映射到屏幕像素坐标。
    • 变换:视口变换(Viewport Transformation)。

变换的顺序通常是从对象空间开始,经过模型变换,然后是世界变换,接着是视图变换,透视变换,规范化,最后是视口变换。

在图形管线中,几何数据首先被转换到世界空间(World Space),然后到相机空间(Camera Space),接着进行投影变换,得到裁剪空间的坐标。这个裁剪空间的坐标在[-w, w]范围内,其中w是顶点的齐次坐标的w分量。

裁剪空间中的坐标之后会经过视口变换(Viewport Transformation),将其映射到屏幕空间,最终渲染到屏幕上。

在裁剪空间中,可以进行裁剪操作,例如剔除不在视锥体内部的顶点,这样可以提高渲染效率。

在计算裁剪空间坐标时,通常使用齐次坐标来表示顶点位置,这样可以简化透视除法的计算。透视除法将裁剪空间中的坐标转换为规范化设备坐标(Normalized Device Coordinates,NDC),其x、y和z坐标范围在[-1, 1]之间。

案例参考GAMES101 04 games101-变换(模型、视图、投影)-CSDN博客

相关推荐

  1. C语言从头31——与字符串变量相关函数

    2024-04-28 01:48:01       27 阅读
  2. pytorch常用函数详解

    2024-04-28 01:48:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 01:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 01:48:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 01:48:01       82 阅读
  4. Python语言-面向对象

    2024-04-28 01:48:01       91 阅读

热门阅读

  1. MySQL 按指定字段自定义列表排序

    2024-04-28 01:48:01       32 阅读
  2. phpstudy-Ubuntu面板(小皮面板)

    2024-04-28 01:48:01       37 阅读
  3. Mysql 锁学习笔记

    2024-04-28 01:48:01       26 阅读
  4. C#面:泛型有哪些常见约束

    2024-04-28 01:48:01       34 阅读
  5. Oracle知识点Day05

    2024-04-28 01:48:01       28 阅读
  6. docker安装nacos

    2024-04-28 01:48:01       39 阅读
  7. 主控制文件(项目的开始)食用顺序_3

    2024-04-28 01:48:01       159 阅读
  8. idea git commit全局ignore配置

    2024-04-28 01:48:01       33 阅读