13

在尝试了解不同的坐标系时,我遇到了这个网站,其中指出:RenderMan 使用left-handed coordinate system正旋转是clockwise,而 OpenGL 使用right-handed coordinate system正旋转是counter-clockwise

我的问题是旋转方向和坐标系惯用手是否只是两个不同的约定还是数学本身的结果?

同样,我知道三角形的正面顶点必须counter-clokwise在 OpenGL 中按方向排序。这是否也与坐标系惯用手有关,还是只是另一个不相关的约定?

第三,当x, y, z我面前扔了一张带有轴标记的随机坐标系的图片时,我如何分辨哪个是左撇子,哪个是右撇子?我知道右手和中指、食指和拇指有一条规则,但每个人似乎使用它的方式不同。我应该如何将我的手指与这些轴对齐?

很抱歉可能将很多不相关的东西混合在一起,但在阅读了各种互联网资源之后,我的脑海中开始融合在一起。

4

3 回答 3

9

左手或右手的一种相当常见的方法:

  1. 双手平放,将手指指向 X 的方向。
  2. 卷曲除食指以外的所有手指以指向 Y。
  3. 举起你的拇指。那是Z。

又是:

  • +x = 食指
  • +y = 中指(和/或无名指和小指)向内弯曲 90 度
  • +z = 拇指伸出

给定一个 XYZ 坐标系,确定正旋转:

  1. 将拇指指向 +X、+Y 或 +Z 的方向。
  2. 手指弯曲和指向的方向是正旋转的方向。

在我熟悉的大多数情况下(YMMV),右手定则是常态。图形有时在使用左手定则时会有些麻烦。在我熟悉的情况下,这绝不是详尽无遗的,选择左手规则是因为程序员/设计师希望 Z 指向某个“自然”方向。也许有些人不喜欢 Z 指向或指向屏幕的概念。

一旦选择了特定的手性,就会对矢量方向产生影响。虽然我不确定这是不是正确的示例,因为我处理的是图像处理而不是图形,但如果使用定向线段定义多边形,那么连续线段的叉积将指向屏幕外或屏幕内。知道 2D 多边形的哪一侧朝向观察者“外”很重要,因为多边形可能代表一些在相对两侧具有不同颜色的 2D 对象。

更一般地说,左手习惯的选择将决定如何处理叉积。“X 交叉 Y 等于 Z”是您用手指和拇指指向时所做的事情。

试着伸出双手并这样做:

  1. 将左手和右手手指指向前方,远离身体。那是X。
  2. 将手指向左弯曲——将一只手翻转过来。那是Y。
  3. 现在伸出你的拇指。它们指向相反的方向。
于 2013-11-03T02:52:02.793 回答
4

有时,一幅画描绘一千个字……

在此处输入图像描述

实际上,有几种有效的右手配置,所以选择一个并坚持下去:

备择方案

于 2015-12-03T14:25:38.137 回答
0

左/右手坐标系及其各自的顶点旋转是不同的约定。顶点的旋转很重要,因为它决定了法线面的方向。

这些法线用于从光计算到渲染确定的所有内容。如果三角形的法线指向与视图矢量相同的方向,则它背向相机并且不会被绘制。

如果三角形的法向量朝向与视图向量相反的方向(换句话说,朝向相机),则三角形是可见的并且将被绘制。

因为z方向(z在计算机图形学中通常被认为是“从前到后”的方向,也可以是x或y)在右手和左手系统中翻转,所以向量的“旋转”是肯定加载的很重要。

回答您的第三个问题:如果您有几个顶点要离开,并且您知道哪个轴是从前到后的,您可以轻松判断它是右手系统还是左手系统。在右手系统中,z 会随着您远离相机而减小。在左手系统中,z 增加。

你可以在这个网站上看到如何定位你的手: 右手/左手坐标系

于 2013-11-02T21:37:30.507 回答