我一直在搜索ar.js多标记教程或任何对此进行解释的内容。但是我只能找到2个示例,但没有教程或解释。
到目前为止,我了解到它需要学习标记的模式或顺序,然后将其存储在localStorage中。以后将使用此数据来显示图像。
我不了解的是如何实现此“学习者”。另外,学习过程仅由“创建者”使用一次,对吗?应该存储输出文件,然后在以后需要时提供它,而不是在每个人的电话或计算机上从头开始创建。
感谢您的帮助。
由于问题主要是关于学习者页面的,我将尽我所能将其分解:
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中修改名称。