javascript - 使用 A 框架在相机 View 中生成实体,无需嵌套

标签 javascript aframe webvr

如何直接在相机 View 中生成实体而不将其嵌套为子节点?

我试图在某些情况下在用户面前生成立方体,即使相机移动到特定的 VR 设备(例如纸板),这些立方体也保持在其绝对位置。

一个常见的嵌套示例:

<a-camera position="0 1.6 0">
    <a-box position="0 0.5 -1"></a-box> <!-- Unclickable button on cardboard -->
</a-camera>

默认相机 View 的普通按钮示例是:

<a-box position="0 0.5 -1"></a-box> <!-- Clickable button on cardboard-->
<a-camera postion="0 1.6 0"></a-camera>

上面的代码是简化版本,不包含按钮交互,因为它们与问题无关。

最佳答案

如果您想将“屏幕坐标”转换为场景“3D 世界坐标” - Three.js 可以提供帮助:

// x, y are screen coordinates, but rescaled to <-1 : 1>
var position = new THREE.Vector3( x, y, -1 ).unproject( camera );

x,y 的范围必须在 -1 到 1 之间,因此您必须重新调整位置:

x = ((positionOnScreen - screenWidth/2) / screenWidth/2)

就像我一样here (“foo”组件,红色框,尽管我必须沿着计算的方向移动它)。


另一方面,如果您正在做UI,那么如果您只创建一个响应式HTML<,您将为自己节省很多麻烦。/strong> 叠加。如果是“VR UI”,则尝试在相机前面创建一个“菜单区域”而不是固定菜单。

关于javascript - 使用 A 框架在相机 View 中生成实体,无需嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64773291/

相关文章:

ruby-on-rails - 我在我的 Rails 应用程序的 Assets 管道中包含 AFRAME 时遇到问题

aframe - 如何将 JSON 数据加载到 A-Frame 组件中?

JavaScript + 另一个函数中的引用对象?

javascript - jQuery Accordion - 打开页面加载的特定部分

javascript - 显示 Bootstrap 下拉菜单以将列表定向到左侧而不是右侧

javascript - React-native UI 挑战

javascript - AFrame 内容无法在使用 hyperHTML 的 Chrome 上呈现

javascript - 在注入(inject)文件上声明的函数无法从 chrome 扩展中的 background.js 识别

javascript - 在 A-Frame (webvr) 中使用 collada 对象的事件集组件

three.js - WebVR - 如何在耳机屏幕和监视器屏幕上显示