three.js - 有什么方法可以处理 AR.js / A-Frame 中的多个多标记区域?
问题描述
我正在尝试使用 A-Frame 在 AR.js 中设置多个标记区域。我们的想法是将 4 个模式标记布置为每个内容的方形框架。 AR.js 多标记示例利用学习器将姿势矩阵数据放入 URL。有没有办法生成不同的多标记文件并将它们分配给每个 a 标记?我附上了一些示例代码来展示我想要实现的目标。
<a-scene>
<a-marker preset="area" id="first">
...
</a-marker>
<a-marker preset="area" id="second">
...
</a-marker>
<a-marker preset="area" id="third">
...
</a-marker>
<a-camera />
</a-scene>
解决方案
似乎带有配置对象的本地存储项的名称在这里是硬编码的。
我能够获得多个标记区域,但我必须修改 ar.js 代码。结果出现在这个故障中,标记在资产中。
首先,我必须创建并保留多标记配置对象(参见这个SO 线程,或者这个关于自定义区域标记的 ar.js 问题)。在创建场景之前,我设置了配置:
// the name will correspond to the marker id
var oneMarker = { /* paths, pose matrices, etc. */ }
localStorage.setItem("oneMarkerFile", JSON.stringify(oneMarker));
第二- 我修改了Arjs.Anchor 对象- 所以它不会读取预定义的 localStorageObject:
// originally ARjsMultiMarkerFile
let markerId = markerParameters.markerName + "MarkerFile"
第三- 我必须以markerParameters.markerName
某种方式通过。Arjs.Anchor 对象是在arjs-anchor 组件初始化函数中创建的。只需一行,您就可以设置上述markerName
属性:
markerParameters.markerName = _this.el.id
// anywhere before instantiating the anchor (new ARjs.Anchor(arSession, markerParameters))
推荐阅读
- c++ - 为包装字符串流的类重载 ostream 运算符
- javascript - 如何在 DataTable 的单个单元格中创建多个超链接
- vue.js - 在 Vue 中是否可以使用自定义指令或渲染函数以编程方式使用转换包装元素或组件?
- java - Jboss EAP 7 部署失败 - "{\"WFLYCTL0080: 失败的服务\" => {\"jboss.deployment.unit.\\\"OptionsManagementREST.war\\\"
- javascript - Webpack Encore 未在基本模板中加载 JavaScript
- html - 试图找出带有背景图像和部分块的布局
- node.js - 如何使用node.js将对API调用的JSON响应的值存储在与(未知)对象数量一样多的变量中
- ruby - Ruby 多个代码块如何协同工作/链接时如何工作?
- c++ - 从 ROOT 更改目录 (C++)
- javascript - 如何通过网站在 IOS 设备上录制音频