由于这个问题主要是关于学习者页面的,我会尽量分解它:
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”短语下找到它。