参考书:Real-time Rendering 2nd, 《3D游戏与计算机图形学中的数学方法》
最初,物体在模型空间中,通过模型变换改变了物体的位置和朝向,物体被变换到世界空间。
按照变换顺序,应该先旋转后平移,对于opengl的规则,是TR X V。
矩阵T,R都是4X4的,T中只有第4列有效,其他是单位阵的排列,R中是前3X3子阵有效,其他是单位阵排列,将TR相乘:
| 1 0 0 Tx | | Ux Vx Nx 0 | | Ux Vx Nx Tx |
| 0 1 0 Ty | X | Uy Vy Ny 0 | = | Uy Vy Ny Ty |
| 0 0 1 Tz | | Uz Vz Nz 0 | | Uz Vz Nz Tz |
| 0 0 0 1 | | 0 0 0 1 | | 0 0 0 1 |
可
见,在最后得到的4X4 TR矩阵中,等于是把3X3
UVN矩阵填到平移矩阵中,这两个矩阵相乘时互相没有影响对方。其实UVN表示坐标系的映射—用(1,0,0)T, (0,1,0)T,
(0,0,1)T分别右乘UVN矩阵,得到的列向量正是UVN的3列,这就是说三个坐标轴被UVN矩阵变换到世界坐标系中了,而UVN的3列表示的正是
x,y,z轴在世界坐标系下的向量。
再加上缩放变换,先看一下R X S :
|Ux Vx Nx 0| | Sx 0 0 0 | | UxSx VxSy NxSz 0 |
|Uy Vy Ny 0| X | 0 Sy 0 0 | = | UySx VySy NySz 0 |
|Uz Vz Nz 0| | 0 0 Sz 0 | | UzSx VzSy NzSz 0 |
|0 0 0 1| | 0 0 0 1 | | 0 0 0 1 |
那么最终的 T X R X S就是:
| UxSx VxSy NxSz Tx |
| UySx VySy NySz Ty |
| UzSx VzSy NzSz Tz |
| 0 0 0 1 |
可见缩放矩阵的作用是分别对三个坐标轴进行缩放。这个4X4矩阵,第4列是平移变换,3X3部分是缩放和坐标轴变换。因为坐标轴是单位向量,所以求3X3每列的模就得到相应的缩放值。
如果是把物体从世界坐标空间变回到模型空间,那么逆矩阵就是:
(TRS)-1 = S-1 X R-1 X T-1
| 1/Sx 0 0 0 | | Ux Uy Uz 0 | | 1 0 0 -Tx | | Ux/Sx Uy/Sx Uz/Sx (U' dot -T) |
= | 0 1/Sy 0 0 | X | Vx Vy Vz 0 | X | 0 1 0 -Ty | = | Vx/Sy Vy/Sy Vz/Sy (V' dot -T) |
| 0 0 1/Sz 0| | Nx Ny Nz 0 | | 0 0 1 -Tz | | Nx/Sz Ny/Sz Nz/Sz (N' dot -T) |
| 0 0 0 1| | 0 0 0 1| | 0 0 0 1 | | 0 0 0 1 |
其中 U', V', N'是U,V,N分别乘以1/Sx, 1/Sy, 1/Sz
这个4X4的逆变换矩阵就不是没影响啦,第4列是U', V', N'和-T的点积,计算这种逆矩阵时要注意,不能直接填-T的!这个逆矩阵是不能直接“填”出来的,3X3部分每一行是逆缩放后的坐标轴,第4列是前面矩阵每一列和-T的点积
至于为什么UVN矩阵的逆就是他的转置,因为UVN是正交矩阵。坐标轴是一组正交基,向量空间中所有向量都可以用这组正交基线性表出。
分享到:
相关推荐
#### 二、顶点坐标变换和光照流水线 Direct3D中的图形显示过程通常被划分为两个主要阶段:坐标变换和光照阶段(Vertex Transformation and Lighting, VT&L)以及光栅化处理阶段(Rasterization)。这两个阶段是实现...
- **几何图形流水线**:负责生成和处理三维空间中的几何图形,包括模型的构建、变换以及投影。 - **像素图形流水线**:处理经过投影后的二维几何图形,将其转换为最终可以在屏幕上显示的像素形式。 #### 二、几何...
在计算机图形学领域,DirectX(DX)渲染流水线是实现高效3D图像生成的关键技术之一。DX渲染流水线是由微软开发的一套API,它允许程序员控制硬件加速的图形处理,极大地提高了游戏和图形应用的性能。本文将深入探讨DX...
本压缩包"IOS应用源码之利用OpenGL固定流水线绘制球体.zip"包含了一个iOS应用的源代码示例,展示了如何使用OpenGL的固定功能流水线来绘制球体。 首先,我们来理解一下OpenGL的固定流水线。在早期的OpenGL版本中,...
转换过程中通常包括模型变换、视图变换和投影变换。 - 逐顶点光照:在此阶段,顶点的光照效果会被计算,这些计算可能包括环境光、漫反射光、镜面反射光等。 3. 曲面细分着色器(Tessellation Shader Stage): 在...
10. **渲染流水线**:理解OpenGL的渲染流水线非常重要,它描述了从顶点数据到屏幕上像素的过程。这包括顶点处理、几何处理、光栅化和像素操作等阶段。 在实际编程过程中,你需要编写代码来加载字体、定义3D坐标、...
2. 请简述几何图形流水线中各坐标系变换的功能。 3. 请简述视景坐标系与视景体的概念。 4. 请简述直线段像素化中DDA算法的原理。 5. 请简述走样与反走样的基本原理 6. 请简述环境光源的概念。 7. 请简述全局光照模型...
在Unity引擎中,几何着色器(Geometry Shader)是一种高级图形技术,用于处理图形流水线中的几何阶段。它允许开发者在GPU上自定义物体的几何形状,生成或修改额外的顶点,以此来实现各种复杂的视觉效果。这篇文章将...
针对图形加速器中几何变换的特性,提出其软件设计模型,并采用并行流水线的结构,用硬件设计和实现了图形加速器中的几何变换单元,提高了图形加速器的运行速度;最后将电路下载到FPGA开发板进行了验证。实验结果表明...
在固定流水线中,主要步骤包括顶点处理、几何变换、光照计算、投影和裁剪、纹理映射以及像素渲染等。 在本项目中,"OpenGLTest"可能是主程序文件或一个包含关键代码的类,它展示了如何使用OpenGL ES的固定流水线来...
3. **3D几何形状**:在WPF中,你可以使用`MeshGeometry3D`类来定义基本的3D几何形状,如立方体、球体和锥体。通过定义顶点和面,可以构建复杂的3D模型。 4. **材质与光照**:3D物体的外观由材质和光照控制。`...
基于3D图形开发技术是计算机图形学的核心内容之一,它涉及到从几何建模到渲染输出等一系列复杂的过程。这份教学资料包括了1到7章的内容,通过PPT的形式为学习者提供了丰富的理论知识和实践指导。 1. 第一章:基础...
它涵盖了图形流水线的基本概念,这是一个将3D模型转化为2D屏幕上可见图像的过程。教程中包括了如何设置Direct3D环境、创建设备、处理顶点和渲染几何体等内容,这些都是构建3D应用程序的基础。 Direct3D 体系结构...
该书内容涵盖3D图形学基础、固定流水线技术、游戏引擎架构设计等多个关键领域。 首先,3D图形学是游戏引擎的基础,书中会讲解基本的几何概念,如向量、矩阵、变换和光照等。向量用于表示3D空间中的位置和方向,矩阵...
2. **3D图形管线**:详细解析3D图形的流水线工作流程,包括顶点处理、几何变换、裁剪、投影、屏幕空间光栅化以及像素处理等阶段。 3. **顶点缓冲和索引缓冲**:介绍如何使用顶点数据构建3D模型,以及如何通过索引...
这门学科不仅涉及几何学、线性代数,还包括向量代数、矩阵运算、坐标变换、投影与视图、光照模型等多个方面。以下是这些知识点的详细阐述: 1. **向量与标量**:在3D空间中,向量表示具有大小和方向的量,如速度或...
4. **图形管线**:Direct3D采用一种流水线式的处理方式,从顶点数据到最终屏幕上显示的像素。图形管线包括顶点处理阶段(顶点着色器)、几何处理阶段(几何着色器)和像素处理阶段(像素着色器),每个阶段都可以...
5. **图形流水线**:理解图形渲染流水线,从顶点数据到屏幕像素的过程,包括顶点处理、几何处理、光栅化和像素处理等阶段。 6. **几何变换**:C++和C语言可以实现各种几何变换函数,如旋转、平移、投影,这些变换常...
2. **图形管线**:Direct3D中的流水线模型,从顶点数据到屏幕像素的过程。 3. **渲染技术**:包括深度缓冲、背面剔除、纹理映射、光照模型等。 4. **Shader编程**:编写着色器代码,定义物体表面的视觉效果。 5. **...