防止相机进入'通过'aframe对象

时间:2017-04-17 23:45:02

标签: html three.js aframe webvr

假设我有一个圆柱模型加载到我的webvr场景中。如何使对象固定?即用户(摄像机视图)不能占据对象内的任何位置或移动“通过”对象。我怎样才能做到这一点?

<a-scene>
  <a-assets>
    <a-asset-item id="cube-obj" src="cube.obj"></a-asset-item>
  </a-assets>
  <a-entity id="cameraWrapper" position="0 2 10" rotation="0 0 0">
    <a-camera near="0.1" user-height="0" id="camera" listener></a-camera>
  </a-entity>
  <a-entity obj-model="obj: #cube-obj; mtl: #cube-mtl" scale="1 1 1" rotation="-90 0 0"></a-entity>
  <a-plane position="0 4 4" rotation="-90 0 -90" width="4" height="4" color="#7BC8A4"></a-plane>
  <a-sky color="#ECECEC"></a-sky>
</a-scene>

2 个答案:

答案 0 :(得分:3)

这取决于您计划支持的设备以及您允许用户使用的设备 导航你的场景。对于大多数VR体验,请遵循最佳实践 将相机按比例移动到用户的动作。如果用户步骤 在房间空间中向前移动并且相机被阻挡,&#34;这是非常糟糕的 经验。对于大多数VR应用来说,做运动更好 teleportation, 设计你的场景,以阻止障碍,或探索更多的创意 将用户带入世界的方式。

使用游戏手柄或WASD控件或VR场景进行非VR桌面体验 相机在车内,你可以添加一个 physics engine来 防止通过障碍物移动。

^ 我会尽快将其添加到A-Frame FAQ或文档中。这已添加到A-Frame FAQ。这是example using checkpointsexample using a physics engine

答案 1 :(得分:0)

由于我登陆这里是为了寻找一个更简单的答案(而不是处理自定义,而是标准的AFrame对象),所以也许这不是您想要的。但是,如果您只是要求“防止摄像机穿过AFrame对象”,也许这会对您有所帮助。

在下面的示例中,我使用AFrame Physics System来管理物理。 我已经从AFrame Extras复制了translationsqueue组件,并将其命名为kinematic-body(请参见嵌入式脚本),因为它被标记为“已弃用”,因此将来可能会消失。 / p>

您将看到如何在场景中移动,但是当到达某个对象时,您将无法在其中移动。这在台式机和Oculus Go中都对我有效。诀窍很简单:相机内置在kinema-body装备中,对象(平面和盒子)是kinema-body。当static-body碰到kinema-body时,它会停止(或者,或者根据它的移动方式尝试在其周围移动)。

static-body