【问题标题】:Any ar js multimarkers learning tutorial?任何 ar js 多标记学习教程?
【发布时间】:2020-05-07 09:06:30
【问题描述】:

我一直在寻找 ar.js multimarkers 教程或任何解释它的东西。但我只能找到 2 个示例,但没有教程或解释。

到目前为止,我知道它需要学习标记的模式或顺序,然后将其存储在 localStorage 中。此数据稍后用于显示图像。

我不明白的是,这个“学习者”是如何实现的。另外,学习过程只被“创造者”使用一次,对吧?输出文件应该存储起来,然后在需要时提供,而不是在每个人的手机或计算机上从头开始创建。

感谢任何帮助。

【问题讨论】:

  • 检查this。随时让我知道如何改进 anwser。
  • 嘿@Piotr Adam Milewski,我之前已经检查过那个帖子。但我不明白学习者是如何实现的。我不明白切换标记助手的作用或重置标记区域的作用。我也尝试直接使用学习器,但它没有检测到所有标记(我有 ABCDGF,它检测到 ADGF)。
  • 如果这仍然无法解决,我稍后会尝试编译 anwser。或者考虑一个教程,因为多标记有很多事情要做:P
  • @PiotrAdamMilewski,太棒了!对此,我真的非常感激。谢谢。
  • 这是我目前能做的,但这是一个非常复杂的话题。

标签: three.js augmented-reality aframe


【解决方案1】:

由于这个问题主要是关于学习者页面的,我会尽量分解它:

1) 您需要有一个 {type, URL} 对象数组。

创建默认数组的示例如下所示(source code):

var markersControlsParameters = [
        {
            type : 'pattern',
            patternUrl : 'examples/marker-training/examples/pattern-files/pattern-hiro.patt',
        },
        {
            type : 'pattern',
            patternUrl : 'examples/marker-training/examples/pattern-files/pattern-kanji.patt',
        }]

2)您需要将此提供给“学习者”对象。

默认情况下,上述对象被编码到 url (source) 中,然后由学习者站点解码。重要的是,发生在网站上: 对于数组中的每个对象,都会创建并存储一个 ArMarkerControls 对象:

// array.forEach(function(markerParams){
var markerRoot = new THREE.Group()
scene.add(markerRoot)
// create markerControls for our markerRoot
var markerControls = new THREEx.ArMarkerControls(arToolkitContext, markerRoot, markerParams)
subMarkersControls.push(markerControls)

subMarkersControls 用于创建用于进行学习的对象。终于:

var multiMarkerLearning = new THREEx.ArMultiMakersLearning(arToolkitContext, subMarkersControls)

示例学习者网站有多个实用功能,但据我所知,这里最重要的是 ArMultiMakersLearning 成员,可以按以下顺序(或任何其他顺序)使用:

// this method resets previously collected statistics
multiMarkerLearning.resetStats()

// this member flag enables data collection
multiMarkerLearning.enabled = true 

// this member flag stops data collection
multiMarkerLearning.enabled = false

// To obtain the 'learned' data, simply call .toJSON()
var jsonString = multiMarkerLearning.toJSON()

仅此而已。如果将 jsonString 存储为

localStorage.setItem('ARjsMultiMarkerFile', jsonString);    

然后它将在以后用作默认的多标记文件。如果您想要自定义名称或更多区域 - 那么您必须修改 source code 中的名称。

3) 2.1.4 调试界面

调试 UI 似乎已损坏 - UI 按钮确实存在但无处可见。一个热修复将使用 'markersAreaEnabled' 跨度样式的 div
包含按钮(参见 source 位)。

都在this glitch 中,您可以在 arjs 代码中的“CHANGES HERE”短语下找到它。

【讨论】:

  • 非常感谢,无论解决与否,我都会深入了解并回复您。谢谢!
  • 在您的link 中,您正在使用 ar.js.02.07.js。我检查了内容,它与当前版本中的 ar.js 文件基本相同。但是当我用 ar.js 代替它时,它就不起作用了。基本上我有和你一样的故障,一个索引和一个learner.html。但是当我打开我的索引时,它不会显示除场景之外的任何内容,也不会显示任何按钮。我现在很困惑。
  • 你把它托管在故障上吗?
  • 我刚刚上传了。以前从未使用过故障,所以希望这没问题:link
  • 如果您检查 UI,您会看到按钮存在,但样式全乱了。查看我更新的 anwser 和 this glitch