FLARManager是一套用于开发Flash Augmented Reality应用的框架。支持主流的AR引擎和3D引擎。FLARManager为开发者提供了图像预处理、强大的事件机制、多marker检测等功能。最方便的是大部分参数都可以通过XML来配置,这就大大方便了开发者。今天我们就从FLARManager的配置文件来学习他的强大功能。
一个完整的FLARManager配置文件(v1.0.4)包含三个部分:flarSourceSettings(配置输入源参数),flarManagerSettings(配置FLARManager自身的参数),trackerSettings(配置具体的AR引擎的参数):
<flarSourceSettings>
sourceWidth="640" sourceHeight="480" displayWidth="640" displayHeight="480"
这几个参数表示输入源的大小和显示大小。要注意的显示大小可以是任意值和任意比例,FLARManager内部会处理输入源的裁切或者缩放。显示大小对性能没什么影响,但是输入源就不同了。一般的摄像头分辨率支持到640x480,但是我们可以用320x240的分辨率来用于计算,这样可以提高一些性能,但是相应的检测精度也会降低。
由于trackerToSourceRatio参数的存在(下面会介绍),我们一般不用改动这几个默认值。
framerate="30"
帧率
loaderPath="" useProxy="false"
FLARManager的flarSource默认为FLARCameraSource,也就是最常用的摄像头。此外还可以是FLARLoaderSource或FLARProxy。这个loaderPath参数就是用于指定外部加载的文件,比如我们可以去加载一个swf动画。FLARProxy是用鼠标键盘来模拟marker的测试用源,可以设置useProxy=true来启用这个功能。
activityThreshold="16"
当Camera的MotionLevel到达一定阙值的时候再更新检测源,提高这个数值可以有效减少抖动的产生。
trackerToSourceRatio="0.5"
用于检测的图像相对于输入源的比例。0.5表示将输入源缩小一半以后再用于计算。这个数值越小,计算速度越快。
<flarManagerSettings>
mirrorDisplay="true"
是否水平反转图像,像照镜子那样的图像更符合我们的习惯。
inverted="false"
我们知道默认的marker都是黑色边框的。如果设置inverted=true来反相输入源,就可以实现白边框marker的检测。FLARManager内部会自动加载Pixel Blender滤镜invert.pbj用于图像处理。
markerUpdateThreshold="80"
当检测到两个拥有相同pattern的marker时,比较两者的空间距离,如果小于这个阙值,表示是一次更新,而不是一个新的marker。设置为较大的数值适用于快速运动或者仅允许一个marker出现的情况。根据项目的实际需要调整这个值很重要。
markerRemovalDelay="1"
触发marker的移除事件的延迟时间,单位是帧。如果帧率是30fps的话60就是2秒。
sampleBlurring="1"
输入源的模糊数值。模糊可以消除一些杂讯,从而提高检测的速度,但同样可能降低精度。
markerExtrapolation="true"
是否根据marker的速度来估算marker的位置,在一些快速运动的情况下可以更好的跟踪marker的位置。
smoother="FLARMatrixSmoother_Average" smoothing="3"
指定用于平滑AR的计算结果的处理器(IFLARMatrixSmoother)和参数。默认的平滑处理器采用计算平均值的方法,而smoothing则表示存储多少帧的数据用于平滑计算。
thresholdAdapter="DrunkHistogramThresholdAdapter"
指定预先处理输入源的处理器(IThresholdAdapter),用于计算合适的阙值。经过处理器处理后的图像再传给AR引擎进行计算。默认的处理器是DrunkHistogramThresholdAdapter。也可以在程序中指定flarManager.thresholdAdapther=null来略过此步处理。如果用xml配置的方式指定了非默认的处理器,要记得把类编译进最终文件。
<trackerSettings>
不同的AR引擎所用的参数不尽相同,这里我们以常用的FLARToolkit为例。
<flarToolkitSettings>
这个节点用于FLARToolkit的配置。
cameraParamsFile=""
相机参数文件的路径。
labelAreaMin="70" labelAreaMax="100000"
经过阙值处理后画面中的黑色区域会用于下一步匹配的计算,这两个值就是指定参与计算的黑色区域的最小和最大的面积。提高这个值可以加快检测速度,但是会降低精度。
thresholdSourceDisplay="false"
查看阙值处理后的图像,一般用于调试阶段帮助开发人员确认处理过程的效果。
<patterns>
这个节点用于特征图形的配置。
resolution="16"
特征图形的分辨率,与marker制作的时候相匹配。
patternToBorderRatioX="50" patternToBorderRatioY="50"
marker的特征图形到边框的比例,这两个值要与marker制作的时候相匹配。
minConfidence="0.5"
最小相似度,值越大匹配越严格。在识别度不高的情况下可以适当减小这个值。
<pattern>
size="80"
marker的大小,改变这个值来改变现实世界和虚拟世界之间的比例关系。
path=""
特征图形的加载路径
以上就是XML配置里面的主要参数介绍,英文原版在此。基本上这些参数都是FLARManager框架里面具体对象实例的属性,都可以在程序中指定。另外有些属性在实际开发中也很有用:比如flarManager.numLoadedPatterns(表示系统加载的特征图形数量),flarManager.activeMarkers(处于活动状态的marker数组)等等。请查看文档获取详细信息。