https://www.cnblogs.com/gispathfinder/p/16250274.html
左右手坐标系
众所周知,OpenGL使用的是右手坐标系,而Direct3D使用的是左手坐标系。
除了上面Z轴的方向不一样外,左右手坐标系的还有其他区别:
正向旋转方向:在左手系中用Left-Hand Rule判别,正方向是顺时针方向。在右手系中,用Right-Hand Rule判别,是逆时针方向。
叉积的方向:在右手坐标系中,叉积的方向通过Right-Hand Rule确定,而在左手坐标系中,叉积的方向则由Left-Hand Rule 确定。
World Space 坐标系
World Space 是定义物理世界位置的客观空间,Left hand 和 Right hand只是提供了两种不同的描述空间的方法,但描述的都是同一个世界。左右手坐
标系之间的转换并没有改变所描述的世界,真实世界中的时钟不管是在左手系还是右手系,都是按照顺时针方向旋转的。
View坐标系
无论是左手系还是右手系,World坐标系都描述了同一个世界空间,而你这么观察这个客观的世界空间,就取决于你所使用的坐标系了,这是OpenGL跟
Direct3D最主要的差别。下面先看个例子,
摄像机设置都是EyePos(0, 0, 15), LookAt(0, 0, 0), UpVec(0, 1, 0),红色方块的位置都是(-3, 0, 0),绿色方块的位置都是(3, 0, 0),
那么为什么OpenGL跟Direct3D是左右颠倒的呢?个人觉得是因为View坐标系是左手还是右手的关系,在Direct3D中,View空间坐标系是Left Hand,
Z轴就是ViewDirection(Lookat - EyePosition),当摄像机在(0,0,15)的地方往原点看的时候,确实是(-3,0,0)处红色的方块出现在(3,0,0)
出绿色方块的右边。而在OpenGL中,View空间坐标系是Right
左右手坐标系
众所周知,OpenGL使用的是右手坐标系,而Direct3D使用的是左手坐标系。
除了上面Z轴的方向不一样外,左右手坐标系的还有其他区别:
正向旋转方向:在左手系中用Left-Hand Rule判别,正方向是顺时针方向。在右手系中,用Right-Hand Rule判别,是逆时针方向。
叉积的方向:在右手坐标系中,叉积的方向通过Right-Hand Rule确定,而在左手坐标系中,叉积的方向则由Left-Hand Rule 确定。
World Space 坐标系
World Space 是定义物理世界位置的客观空间,Left hand 和 Right hand只是提供了两种不同的描述空间的方法,但描述的都是同一个世界。左右手坐
标系之间的转换并没有改变所描述的世界,真实世界中的时钟不管是在左手系还是右手系,都是按照顺时针方向旋转的。
View坐标系
无论是左手系还是右手系,World坐标系都描述了同一个世界空间,而你这么观察这个客观的世界空间,就取决于你所使用的坐标系了,这是OpenGL跟
Direct3D最主要的差别。下面先看个例子,
摄像机设置都是EyePos(0, 0, 15), LookAt(0, 0, 0), UpVec(0, 1, 0),红色方块的位置都是(-3, 0, 0),绿色方块的位置都是(3, 0, 0),
那么为什么OpenGL跟Direct3D是左右颠倒的呢?个人觉得是因为View坐标系是左手还是右手的关系,在Direct3D中,View空间坐标系是Left Hand,
Z轴就是ViewDirection(Lookat - EyePosition),当摄像机在(0,0,15)的地方往原点看的时候,确实是(-3,0,0)处红色的方块出现在(3,0,0)
出绿色方块的右边。而在OpenGL中,View空间坐标系是Right
