投影矩阵求解

在一些3D图形编程工具包中基本的矩阵变换中,投影矩阵是很复杂的.翻转和放大一眼就能理解,任何一个人有基本三角学基础的人都想得旋转矩阵,但投影有点棘手.如果你曾查询像这个一个矩阵的公式,你会觉得一般的理解不足以告诉你如何得出那些.然而,我还没有看到网络的资源,会讨论如何求解投影矩阵的.  这就是我要在这篇文章中涉及的主题.

 

如果你刚刚着手3D图形编程,我要说明的是,理解投影的求解对那些比较倾向于数学的我们可能含有巨大的好奇,但也不是必须的.你可以仅仅使用方程而已;如果你在使用图形API比如说Direct 3D,它会为你建立投影矩阵,甚至你可以不需要它.所以,如果这篇文章的细节有点势不可挡.只要你理解投影,你就不必关心在不需要的时候它是如何处理的.这篇文章适合那么程序员想了解更多的细节而不是仅仅需要公式.

 

 

概要:什么是投影?

 

 

电脑显示器是一个二围表面,依次,如果你想要显示三维图象,你需要把3D几何对象转换某中形式,这样可以想绘制2D图象一样绘制,那正是投影要完成的.为了使用一个很简单的例子,一种把3D对象投影到2D表面的方法,就是简单抛掉每个点的z坐标.对于一个立方体,看起来可能像图1那样:

 

 

 

 

图1:丢掉z坐标的xy平面上投影

 

 

当然,这的确过于简单,而且在很多情况下都不很有用,

 

首先,你根本不会投影到平面上,但是,你的投影公式会把你的几何体转换为一个新的物体,它称为"规则观察体"("the canonical view volume")."规则观察体"的确切坐标的变化可能随一个图象API到另一个API.但是为了讨论目的,就当它是一个方框,从(-1,-1,0)扩展到(1,1,1),这是为让D3D使用方便.

 

一旦你所有的顶点都映射到"规则观察体"中,唯有他们的x和y坐标用来把他们影射到屏幕.z坐标是不会甬道,但是,它通常被深度缓冲区用与可见性的决定.折旧要转换一个新物体的原因,而不投影到平面上.

 

注意图1还描述一个左手坐标系统,照相机俯视正z轴,指示向上的y轴,指示向右的x轴,这而且又方面了D3D的使用,我会在这篇文章中使用它,没什么计算跟右手坐标系统有很大的不同,或是"规则观察体"轻微的不同.

所以要讨论的一切仍然合适,即使你使用的API使用了不同的规范,而非D3D使用的.

 

这样,你就可以步入真实投影转换中.本文却有几个不同的方法用于投影,我将讨论最常用的两个:

              orthographic和perspective.

 

 

 

Orthographic 投影  (或称平行投影)

 

 

 

为什么叫平行投影,是因为投影的所有线垂直于最终要画的平面,这是一种相对简单的投影技术.观察体:也就是

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值