在尝试理解不同的坐标系时,我遇到了this website,其中指出:
RenderMan使用left-handed coordinate system
,正向旋转为clockwise
,而OpenGL使用right-handed coordinate system
,正向旋转为counter-clockwise
。
我的问题是旋转方向和坐标系手性是否只是两个不同的约定,或者这是由数学本身产生的?
同样,我知道三角形的正面顶点必须在OpenGL中以counter-clokwise
方向排序。这是否与协调系统的手性有关,或者它只是另一种不相关的惯例?
第三,当一张标有x, y, z
轴的随机坐标系图片摆在我面前时,如何判断哪一个是左手,哪一个是右手?
我知道有一条规则用右手和中间,食指和拇指,但每个人似乎都使用不同的方式。我应该如何将手指与这些轴对齐?
很抱歉可能会把很多不相关的东西混合在一起,但在阅读了各种互联网资源后,事情开始在我脑海中融为一体。
答案 0 :(得分:8)
左手或右手相当常用的方法:
再说一遍:
给定XYZ坐标系,确定正旋转:
在我熟悉的大多数情况下(YMMV),右手规则是常态。有时使用左手规则的图形可能有点麻烦。在我熟悉但并非详尽无遗的情况下,选择左手规则是因为程序员/设计师希望Z指向一些“自然”方向。有些人可能不喜欢Z指向或离开屏幕的概念。
一旦选择了某种惯用手法,就会对矢量方向产生影响。虽然我不确定这是正确的例子,因为我处理图像处理而不是图形,如果使用定向段定义多边形,则连续段的叉积将指向屏幕外或屏幕内。重要的是要知道2D多边形的哪一侧面向观察者“向外”,因为多边形可以表示在相对侧具有不同颜色的一些2D对象。
更一般地说,手性的选择将决定如何处理交叉产品。当你用手指着你的手指和拇指时,“X十字Y等于Z”是你正在做的事情。
尝试伸出双手并执行此操作:
答案 1 :(得分:2)
答案 2 :(得分:0)
左/右手坐标系及其各自的顶点旋转是不同的约定。顶点的旋转很重要,因为它决定了法线面向哪个方向。
这些法线用于从光计算到渲染确定的所有内容。如果三角形的法线指向与视图矢量相同的方向,则它背向相机并且不会被绘制。
如果三角形的法线向量面向视图向量的相反方向(换句话说,面向相机),则三角形可见并将被绘制。
因为z方向(z通常假定为计算机图形中的“从前到后”方向,它也可以是x或y)在右手和左手系统中翻转,向量的“旋转”非常重要。
回答你的第三个问题:如果你有几个顶点要离开,并且你知道哪个轴是从前到后,你可以很容易地判断它是右手还是左手系统。在右手系统中,当您离开相机时,z会减小。在左撇子系统中,z增加。
您可以在此网站上了解如何定位: Right/Left handed coordinate systems