EasyAR 3D 物体跟踪¶
功能简介¶
3D Tracking是用于检测和跟踪自然场景中的三维物体。
EasyAR目前可以检测和跟踪有丰富的纹理的三维物体。你仅需要准备好待跟踪物体的3D模型文件,即可创建Tracker,而不需要进行复杂的配置或配准工作。你也不需要将模型或任何数据上传到EasyAR或其他网站上。
Key¶
你需要使用 basic + Pro(trail) key 试用这个功能,或者使用 basic + Pro key 进行发布。可以参考 使用哪个 Key ? 中的描述。
如何获得 OBJ 格式的模型¶
从现有模型中导出
使用 3Ds Max 或 Maya 或是其它建模工具,导入现有 FBX 或其他格式的模型,然后导出成 OBJ 格式。
创建全新的模型
使用 3Ds Max 或 Maya 或是其它建模工具创建 3D 模型并输出为 OBJ 格式。
扫描真实世界中的物体,使用一些3D重建工具生成3D模型
使用 ReMake 或是其他工具生成模型,导入到建模工具中,然后导出为 OBJ 格式。可以选择性地使用3Ds Max 或 Maya等建模工具对模型进行调整。
模型准备¶
使用3D Tracking的第一步是准备好待跟踪物体的3D模型文件。模型文件必须是Wavefront OBJ格式,且必须包含相应的材质文件、以及至少一张纹理贴图文件。纹理贴图文件必须是JPEG或PNG格式。关于模型文件格式的更多细节,请查阅 3D模型规格说明 。以下是一些模型的例子及反例,供快速参考。
模型应当具有丰富的纹理细节。
第一个物体可以被EasyAR检测和跟踪。EasyAR无法检测和跟踪第二个物体,因为它的纹理太少了。
模型可以有不同的形状。
这两个物体都可以被EasyAR检测和跟踪。
模型文件中不能引用绝对路径。
这个模型无法被加载进入EasyAR的tracker中,因为EasyAR找不到使用了绝对路径的文件。
文件名以及模型文件内部的路径不能有空格。
模型文件应该使用 UTF-8 编码格式。
模型面的法向量的正向遵循右手准则。
第二个立方体中阴影部分的面片的法向量是负值取向。这种面片在EasyAR中会当成不可见面处理。如果从里面看出去,会发现显示成第三个立方体的样子。模型应当避免一切负值取向的面片。
开始工作¶
当你把待跟踪物体的3D模型文件准备好以后,在EasyAR中可以像使用图像跟踪功能的图片一样使用这些模型。
参考 EasyAR SDK Samples¶
可以参考不同平台上的 HelloARObjectTracking 样例。
请注意,你需要使用 basic + Pro(trail) key 试用这个功能,或者使用 basic + Pro key 进行发布。可以参考 使用哪个 Key ? 中的描述。
另外,你可能还希望参考不同平台的 HelloAR 和 HelloARTarget 样例来了解不同的target使用方法。虽然这些样例使用 ImageTarget,但是你可以很容易将他们改成使用 ObjectTarget.
这里是一些关于如何在不同平台上使用 SDK sample 的介绍。
使用 EasyAR SDK Packages¶
你需要使用 EasyAR 2.0 或之后版本的 Pro 版本。
这里是一些关于如何在不同平台上使用 SDK packages 的介绍。
API 参考¶
Unity 插件参考¶
使用3D object tracking功能需要 ObjectTarget 。
ObjectTarget 节点下的物体Rotation 需要设成,
X: 90
y: 180
z: 0
3D模型规格说明¶
支持的文件格式¶
Wavefront obj格式(.obj)
模型文件最低要求¶
一个3D模型应该包括一个OBJ (.obj)文件以及相应的MTL (.mtl)文件和纹理贴图文件,并放在同一个目录下;
纹理贴图文件支持.jpg和.png格式;
文件名以及文件内部的路径不能有空格;
文件应使用 UTF-8 格式编码;
OBJ (.obj)文件最低要求¶
几何顶点(vertex),用(x, y, z [, w])坐标表示,w为可选项,默认为1.0。顶点的色彩参数不是必须的,如果提供了色彩参数系统并不会加载;
纹理坐标(texture coordinates),用(u, v [,w])坐标表示,w为可选项,默认为0。通常情况下,u和v的取值应该是在0至1之间。对于小于0或者大于1的情形,系统默认会以REPEAT模式进行处理,即坐标的整数部分被忽略,然后构建一个重复的模式;(与OpenGL中的GL_REPEAT处理方式相同)
面元素(face),应当至少包含顶点的索引,以及顶点的纹理坐标的索引。超过3个顶点的多边形(如四边形)面片结构同样支持;
材质文件的引用(mtllib),要求至少指定一个外部MTL材质文件,文件路径必须是相对路径,不能是绝对路径;
模型元素所引用的材质需指定材质名字(usemtl),这个材质名字应当与外部MTL材质文件中定义的材质名字保持一致;
MTL (.mtl)文件最低要求¶
一个MTL文件中应当定义至少一个材质;
纹理贴图(texture map)是必须的。通常情况下,只需要制定环境光(ambient)或者漫反射(diffuse)的纹理贴图。纹理贴图的路径必须是相对路径,不能是绝对路径;
纹理贴图的其他可选参数不是必须的,如果提供了系统并不会采用;