EasyAR 多目标

EasyAR支持同时跟踪多个目标。根据加载目标的不同,可以同时跟踪多个不同目标,也可以同时跟踪多个相同目标。EasyAR的接口非常灵活,可以通过两种方式来实现多目标跟踪。

如果你在使用EasyAR SDK Pro,还可以同时跟踪多个不同类型的target,比如同时跟踪ImageTarget和ObjectTarget。

Target和Tracker

EasyAR的target很灵活,你可以阅读 EasyAR Target 配置 了解更多信息。target代表可以被tracker的物体。对于ImageTracker和ObjectTracker,target只有在load到一个tracker中之后才能被跟踪。只要你愿意,EasyAR允许你创建很多tracker。当一个target被load到tracker之后,它将可以被这个tracker所跟踪,而其他tracker将不会触及这个target。因此当你将target load到tracker之后,在unload之前它将无法被load到另一个tracker中(Unity接口会自动unload)。

单个Tracker的方案

你可以设置tracker的simultaneous number来限制最多可被同时跟踪的目标的个数。只需要一个调用,tracker就可以同时跟踪多个target。你甚至可以在运行时动态修改这个数值,它会按你期望的方式工作。

多个Tracker的方案

在EasyAR设计之初你就可以创建多个tracker,这个概念一直没有改变。

你可以使用多个tracker来跟踪不同的target集合。一个tracker总是会跟踪最多 simultaneous number 个target,它只能跟踪load到它自身的target。如果你创建了多个tracker,你可以同时跟踪某个target集合中的一些target,以及另外一个target集合中的另外一些target。总共可以被跟踪的target个数是所有tarcker的最大跟踪数的总和。

两种方案的对比

两种方案的主要区别是,对于单tracker的情况,你只能同时跟踪一个target集合中预先设置的数量的target,但你不能控制哪个target永远可以被跟踪(即使这个target在场景中,由于检测顺序是随机的,所以无法保证某个target一定会被检测到并被跟踪)。但是多个tracker可以做到这一点。你可以将一个target分配给某个只跟踪一个target的tracker来跟踪,那么只要这个target在场景中,它就一定被检测并跟踪到。

相对于单tracker方案,多tracker方案没有性能影响,跟踪性能主要取决于所有tracker同时跟踪的target数目之和。

Editor设置(Unity)

simultaneous number可以在Tracker inspector上设置,它可以在运行时修改并生效。target需要load到的tracker可以在Target inspector上设置,它也可以在运行时修改并生效。

世界中心模式(Unity)

现在有三种模式。你可以从 ARCameraBaseBehaviour Class API文档中获取更多信息。

效率和数量限制

EasyAR逻辑上不限制最大可跟踪的target数目。最大的可跟踪target的个数取决于硬件性能和target在场景中的大小。

在PC上可以流畅的同时跟踪10个以上的target。在主流智能机上,可以流畅的同时跟踪4~6个target。