首页 > 解决方案 > 有什么方法可以处理 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>

标签: three.jsaframear.jsjsartoolkit

解决方案


似乎带有配置对象的本地存储项的名称在这里是硬编码的。

我能够获得多个标记区域,但我必须修改 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))

推荐阅读