在控制器上覆盖虚拟元素导致比例错误

Overlaying virtual element on the controller resulting in wrong scale

我们目前正在尝试创建一个虚拟对象(一个平面)并将其覆盖在 Magic Leap 设备的控制器上。但是,我们在这样做时遇到了一些困难。 当我将实体的宽度或任何尺寸设置为 1 米时。生成的虚像不是1米,实际上更小

此外,当我们四处移动图像时,它似乎确实相对于控制器保持在相同的位置。 magic leap 好像加了一个offset

  <a-entity id="controller" magicleap-controls="hand: right">
        <a-plane id="board" width="0.45" height="0.1" position="0 0 0.0" rotation="-45 0 0" color="#b3b3b3" material="side: double; transparent: true; opacity: 0.5">
        </a-plane>
</a-entity>

这是我正在使用的代码。我实际上是在尝试创建一个虚拟板(它将映射到物理板——但尺寸不一致)

可能是什么问题??任何线索将不胜感激

我觉得可能是父节点的属性导致的。在 A-Frame 中,每个实体都从其父元素继承 位置、比例和旋转 。子元素继承它并在其 local space 中将其标记为 [0 0 0](或 [1 1 1] 用于缩放)并且可以是 世界space。任何子转换都将应用在其之上。

快速编辑 - 不仅直接父级会产生影响,而且包装最终元素的每个实体都会产生影响。

来源 - relative-positioning

看下面的例子

有 2 个相同的球体,但其中一个被包裹在另一个属性已更改的实体中。看看会发生什么 - 当转换应用于其 local space.

时,它会变形和移位

<!DOCTYPE html>
<html>
    <head>
        <script src="https://aframe.io/releases/1.0.0/aframe.min.js"></script>
        <style>
        
        </style>
    </head>
    <body>
        <a-scene>
          <a-entity position="-6 0 -5" scale="2 2 1">
            <a-sphere scale="1 2 3" position="3 1 -5" color="blue"> </a-sphere>
          </a-entity>
          <a-sphere scale="1 2 3" position="3 1 -5" color="red"> </a-sphere>
        </a-scene>
    </body>
</html>