图形学思考 - 关于物体位置变换 Translation

物体位置变换是图形学的基础

但是其实对于初学者来说其实不是那么容易理解透切的知识。

不信?仔细想想这个问题:计算机到底是如何把一个物体从空间的一个位置移动到另外一个位置的呢?


Translation矩阵很简单:

T = | 1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| b1 b2 b3 1 |

如果某物体原位置是(x0, y0, z0, 1)那么变换之后就得到新的位置(x0+b1, y0+b2, z0+b3, 1)


这里不是要解说这个公式,很多图形学书本上都有详细的解析。

我这里要解说前面那个问题。

比如下面的图:

火箭是如何从坐下的位置移动到右上的位置的呢?

因为如上面的translation 公式好像是移动一个点的位置的,但是这个火箭明显由无数个点组成啊?

难倒是火箭的所有点都乘以Translation矩阵?那么计算一个小小的物体的位移岂不是要消耗大量的计算时间?


其实差不多可以这么理解,不过不完全准确。


计算机移动一个物体一般需要两个步骤:

1. 一般是由CPU利用上面的公式计算了新的物体的顶点位置(当然,现在这个工作也可以由GPU来做了)

2. 然后GPU利用新的顶点位置重新在新的位置绘制火箭。

如果认为火箭比较复杂,那么我们看下面图:


一个四方形就比较简单了。

GPU只需要知道四方形的四个顶点信息就可以绘制一个四方形了。那么移动一个四方形的工作就比较简单了。

1 利用Translation矩阵计算新的四个顶点位置信息

2 GPU在新的位置绘制


进一步讨论:为什么上面说不完全准确呢?

因为:

1 CPU(或者GPU)是需要处理所有的物体的点,但是其实这个点不是所有的像素点,而是顶点(vertices),比如这个四方形就只有四个顶点(vertices),而不是所有像素点。

2 GPU重新绘制的速度是非常快的,而且即使不发生位置变换,GPU也需要刷新屏幕的,所以这部分的消耗跟是否发生位置变换无关。


那么位置变换只会增加计算步骤1的消耗,而这个消耗相对现今的计算机来说都不算很费力的事情。

尤其是现在进入了GPU并行计算时代,这部分内容我也正在深入研究:利用GPU并行计算能力加速图形渲染。

原创:http://blog.csdn.net/kenden23/article/details/20308435


努力,加油。为昆明祈福,中国人民加油!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值