左右手坐标系的互换

来源:互联网 发布:分布式数据库和集群 编辑:程序博客网 时间:2024/04/28 21:13

【原文来自:http://blog.csdn.net/zhang11wu4/article/details/47754035】


左手坐标系和右手坐标系的相互转换

Written by Paul Bourke
May 2001

基于计算机的建模和渲染软件似乎都可以分成两类:使用左手坐标系 或者 使用右手坐标系。 比如 OpenGL 用的是右手坐标系而 PovRay 用的则是左手坐标系。这个文档描述了如何把模型的坐标系/摄像机属性 往不同的坐标系去做转换。以下是两个坐标系,它们的不同于自身的矢量积的不同。。。用的是所谓的左手原则和右手原则。

注意:实际上坐标轴的指向跟以上的图并无相关。y不一定要“向上”,z不一定要“向里”,所有不同指向的坐标轴都可以通过适当地旋转得到以上的相同指向。

有两张种方法可以让左右手坐标系互换得到相同的结果。法一:把模型和摄像机设置中所有顶点(这里的顶点是指需要被显示器显示出来的点)的x值取反;法二:一切坐标保持不变,但在渲染图出来后需要做一个水平方向上的翻转。以下的符号p, d, 和u分别表示显示媒介的位置,视觉方向和向上的方向。

模型 1 - 把x轴坐标取反

模型 2 - 水平翻转渲染结果图

这个例子的模型和摄像机坐标并没有随着左右手坐标系的变换而改变。我们可以看到,只是渲染图在最后时刻做了个水平方向上的翻转。

这个通常作为优选方案,大概是它避免了去考量系统到底使用的时什么坐标系,而只需要在图像处理工具的后运行阶段对图片做一个翻转即可。同样地,不管使用的是什么坐标系,使用法一和法二产生的错误都对导致同样严重的结果,这一点上并没有优劣之分。

你可能会琢磨为什么只按水平方向翻转,这其中有什么特别之处么?答案是因为显示媒介向上的方向(u),按照惯例都是垂直于渲染图的。

0 0