XR中的坐标体系

OpenXR 坐标系定义三种坐标系:

XR_REFERENCE_SPACE_TYPE_VIEW:
view坐标系,坐标原点为HMD左眼或者有眼,z轴指与视线相反,y轴垂直向上,x水平向右。

XR_REFERENCE_SPACE_TYPE_LOCAL
世界坐标系

XR_REFERENCE_SPACE_TYPE_STAGE
暂时与XR_REFERENCE_SPACE_TYPE_LOCAL相同,可以认为就是XR_REFERENCE_SPACE_TYPE_LOCAL
 

world-locked 坐标系的使用场景是用户站着或坐着,所形成的为 static volume ;与之相对的是 body-locked,用户走着跑着跳着,所形成的为 dynamic spatial volume ,这个坐标系是以用户的身体为原点的,随着用户的移动而移动。
 

我们来看看什么世界坐标系,物体坐标系。

世界坐标系(World space)

         世界坐标系是一个特殊的坐标系,它建立了一个全局的场景,有了这个全局的坐标系,其他的坐标系统就可以被确立了。换句话说,我们可以把在其他坐标系中的点转成世界坐标系来表示。但是我们不能用更大的坐标系来表示和包括世界坐标系了。

         在非技术的角度来看,世界坐标系是建立一个我们关心的最大的坐标系统,但很多情况下这并不是整个世界,举个例子,如果我们希望渲染一个笛卡尔坐标系中的一个画面,我们会真实用到的笛卡尔坐标系就是“世界”,我们没必要关心这个世界坐标系被定位在哪里,甚至它是否存在于真实的世界中。

         我们之前说了世界坐标系是用来描述点的绝对坐标的。希望你听到这样的说法的时候耳朵有些刺痛,因为你知道这不完全是真理。我们这里说的绝对坐标是指的在这个我们刚定义的最大的坐标系统中的坐标,而不是在真实的世界中的坐标。就比如之前所说的,你可能知道你现在的位置的经纬度,但是放眼整个宇宙,假设把世界坐标系的原点放在整个银河系的中心的时候,怕是没有人能说出来自己的确切位置了。

         世界坐标系在很多时候也被叫作全局坐标系和宇宙坐标系。

物体坐标系(Object space)

         物体坐标系是关联了一个指定的物体,每一个物体都有一个独立的物体坐标系。当一个物体移动旋转改变了它的朝向,那么与这个物体关联的物体坐标系也随之改变了,也一起改变了朝向。比如,我们都带着自己的坐标系统,如果我们对你说“向前走一步”,我们给了你一个相对于你自己的物体坐标系的指令(请原谅我们把你说成是一个物体,其实你知道我们想表述的意思的)。我们没办法描述你要移动的绝对方向,你可能会向北移动,也可能向南移动,这些“向前”,“向后”,“向左”,“向右”对于一个物体坐标系是有意义的。当你驾车的时候,有的人给你一些指示,有时候告诉你“向左转”,还有的时候告诉你“向东走”。“向左走”是对于一个物体坐标系的,而“向东走”呢,是对于世界坐标系来说的。

         位置和方向在物体坐标系也是可以被明确的。比如,当我问你你车上的杯子在哪里,你不会说在芝加哥,甚至不会说在哪条街道,在这种情况下,如果回答是一个相对于全局的位置是没有意义的,我当然希望的是你能说清楚你的杯子位于你的车的物体坐标系的哪里。

         在图形学中,物体坐标系又被称作模型坐标系(model space),因为模型的顶点都是在这个模型坐标系中表示的。物体坐标系也被广泛用于物理中,比如,用身体的中轴线来当坐标轴。

相机坐标系(Camera Space)

         有一个比较特殊的物体坐标系就是相机坐标系,这个坐标系是我们的视点用来渲染看到的场景所用的坐标系。在相机坐标系中,相机一直处于相机坐标系的原点,+x的方向是向右的,+z的方向是向前的(向屏幕里的方向,因为使用的是左手坐标系),+y的方向是向上。这里的像上不是世界坐标的正上,而是一个相机的上方向。可以来看一下这个相机坐标系的图片。

    view_space

3D中的坐标系文献阅读:https://learnopengl-cn.github.io/01%20Getting%20started/08%20Coordinate%20Systems/

猜你喜欢

转载自blog.csdn.net/grace_yi/article/details/107491092