dx11学习笔记-3.三维空间变换(自己整理,基础详尽)

这篇博客详细介绍了三维空间变换在图形学中的应用,特别是与DirectX (DX)相关的知识。作者首先阐述了坐标空间变换的原因和涉及的坐标系,包括局部空间、世界空间、观察空间、投影空间和屏幕空间。接着,探讨了变换矩阵的构建,解释了齐次坐标的引入及其在矩阵乘法中的作用。博客还详细讨论了视图变换和投影变换,包括正交投影与透视投影的原理,并提到了DX提供的API用于实现这些变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三维空间变换其实是图形学的基本知识,和DX倒没有什么特定关系。但MS关于这块儿的文档教程解释得很详尽。看完之后我觉得我对于坐标变换的理解又深入了一步。此处我截取自己觉得精要的地方来说明。

资料参考:

1、原文: http://www.codeguru.com/cpp/misc/misc/math/article.php/c10123__1/Deriving-Projection-Matrices.htm
译文:http://blog.youkuaiyun.com/zhanghua1816/article/details/23121735
2、http://dev.gameres.com/Program/Visual/3D/shenruTS.htm
3、http://blog.youkuaiyun.com/code_xbug/article/details/46299603
4、MS官方document-Tutorial04:3D Spaces

坐标空间概述

坐标空间,就是用不同的坐标系所度量的空间。不同的坐标系是什么意思呢?原点位置、坐标轴方向、坐标轴单位值,这三者决定了一个坐标系,任一不同,则坐标系不同。(这里决定坐标系的要素是我自己总结的,如有疏漏敬请指出)
为什么图形学里要用到坐标空间变换呢?因为我们输入的模型顶点,通常都是定义在一个local space里的,也就是“局部坐标系”。这个坐标空间的特点就是,以模型上或者模型外一点为原点(通常在模型底心或中心),以正交的XYZ作为坐标轴(轴的方向定义通常与输入模型的面部朝向相关)。每一个输入的模型都有各自的Local space,当我们想把它在我们定义的世界空间里移动旋转缩放时,就面临着问题,因为我们执行的操作需要在一个统一的世界坐标系下执行。这时就需要用到坐标空间变换了——将一个局部坐标系下定义的顶点坐标,转换为世界坐标系下的顶点坐标。

图形学中共涉及以下几种坐标空间:
local space局部空间
world space世界空间
view space观察空间
projection space投影空间
screen space屏幕空间

将输入的模型最终显示到屏幕上,经过的空间变换也基本如上顺序所示。
那么,如何进行变换呢?

变换原理

对顶点进行空间变换,其实就是用不同坐标空间下的坐标值表示同一个点。一个点在三维空间下由三维向量xyz表示,运用变换矩阵,可以将其坐标进行空间变换。那么变换矩阵又是什么呢?
变换矩阵既然能联系两种坐标空间,那么其组成元素必定和坐标轴相关。事实上,从坐标空间A变换到空间B,需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值