EasyAR4.0使用说明(五)----3D物体跟踪

3D物体跟踪总体上是和平面图像跟踪差不多的,设置,包括程序控制,识别多个对象。区别只是目标对象的不同。

总体说明

3D物体跟踪对3D物体的纹理,也就是表面的图案的丰富程度是有要求的,纹理如果是简单的色块组成的效果并不很好。官方对被跟踪的3D物体的详细要求可以查看官方网站的文档

地址:https://help.easyar.cn/EasyAR%20Sense/v4/Guides/EasyAR-3D-Object-Tracking.html

3D物体跟踪主要是ObjectTracker和ObjectTarget这两个游戏对象,每个ObjectTarget对应一个被跟踪的3D物体,场景中也可以同时出现多个ObjectTracker。

总体说明

ObjectTracker游戏对象相关

  • enable属性可以用于获取当前跟踪器状态,也可以用于启用/禁用当前跟踪器。
  • Simultaneous Target Number设置指定当前的跟踪器同时跟踪目标的最大数量。

ObejctTarget游戏对象相关

  • Tracker设置, 每个ObjectTarget游戏对象必须指定一个ObjectTracker游戏对象才能被跟踪,可以通过修改该设置实现对3D物体的加载和卸载。
  • Active Control选项用于设置ObjectTarget游戏对象是否**。
  • Source Type选项用于设置跟踪类型,通常情况下使用Object File即可。
  • ObjectTargetController类提供了4个事件,分别是3D物体被识别TargetFound,被识别的3D物体从视野消失TargetLost,3D物体加载完成TargetLoad和3D物体卸载完成TargetUnload。

跟踪3D物体

导入官方示例中的内容。

  • 将hexagon.obj、hexagon.mtl、hexagon.jpg文件拖到StreamingAssets目录下,作为跟踪用的内容。

  • 将hexagon.obj文件拖到Models目录下,作为识别后显示用的模型。

  • 将hexagon.jpg文件拖到Textures目录下,作为模型纹理。

  • 将hexagon_hexagonMat.mat文件拖到Materials目录下,作为材质文件,并设置材质的纹理为hexagon.jpg。

  • 设置Main Camera游戏对象清除标志Clear Flags为Solid Color。

  • 将EasyAR/Prefabs/Composites目录下的EasyAR_ObjectTracker-1_CloudRecognizer-1预制件拖到场景中。

跟踪3D物体

  • 将EasyAR/Prefabs/Primitives目录下的ObjectTarget预制件拖到场景中。
  • 设置Obj Path属性为hexagon.obj即要跟踪的.obj文件的路径。
  • 修改Extra File Paths的Size值为“2”,并添加另外2个文件的路径,即hexagon.mtl和hexagon.jpg。
  • 设置Name属性和Scale属性。

Scale属性为模型的缩放比例。其值为模型在空间中的物理大小与在模型坐标系中的大小的比值,默认值为1。

跟踪3D物体

  • 将hexagon模型拖到ObjectTarget游戏对象下作为跟踪后显示的模型。
  • 修改Rotation的值为“0,180,0”,选择模型以保持方向一致。

跟踪3D物体

选中hexagon:hexagon游戏对象,设置其材质是导入的材质。

跟踪3D物体

运行效果如下:当识别到3D物体以后就会显示模型,模型正好覆盖原有物体。直观上就是黑白的变成彩色的了。

跟踪3D物体

当然也可以继续添加其他模型,在ObjectTarget游戏对象下添加一个方块后的效果。

跟踪3D物体

物体跟踪也可以同时跟踪多个物体,跟踪多个物体的逻辑和平面图像跟踪多个图像是一样的。包括程序的使用,只是参数类型有所改变,使用方法是一样的。

自制3D物体跟踪

当想要制作一个可以跟踪的3D物体,通常用2种办法,一种是根据实际物体,重新建模,然后实现3D物体跟踪。EasyAR官方并没有给出更好的解决办法,所以,如果是有一个物体想要实现3D物体跟踪的话,只能老老实实建模。

另外是根据3D模型做个物体出来,最简单的当然是联想到3D打印。不过,对于学习使用EasyAR,更推荐使用纸模。

接下来介绍如何将一个3D模型变成可识别的物体。

  • 在Unity商城选取一个3D模型。
  • 修改合适后保存成prefab。
  • 将prefab导出成fbx。
  • 将fbx转换成obj。
  • 将obj转换成纸模。

首先,从Unity商城(当然也可以是其他途经)选取一个不太复杂的模型。

跟踪3D物体

  • 修改模型内容,去掉一些零碎的东西,减小制作难度。
  • 修改纹理贴图使其更容易被跟踪。
  • 将修改好的内容保存成一个prefab。

跟踪3D物体

  • 在Unity3D的商城中找到FBX Exporter插件并导入。
  • 选中之前生成的Prefab文件,选择菜单GameObject-Export To FBX…
  • 在弹出窗口中,选择导出的路径Export Path,在Include选项中选择只导出模型,不导出动画,点击Export按钮即可。

跟踪3D物体

跟踪3D物体

  • 下载纸艺大师软件。下载并安装。地址:https://tamasoft.co.jp/pepakura-cn/download/index.html
  • 点击打开图标,找到obj文件,选中并打开。
  • 调整输出模型的大小和拆分方式。
  • 将结果输出为pdf。
  • 将pdf打印出来,剪开粘好。

跟踪3D物体

  • 将模型文件FireTruckII.obj、firetruckii.mtl和FireTruckII.png导入到StreamingAssets目录,作为识别内容。
  • 将模型文件FireTruckII.obj、firetruckii.mtl和FireTruckII.png导入到Models目录,作为识别后显示的内容。
  • 选中ObjectTarget游戏对象,设置Obj Path属性为FireTruckII.obj即要跟踪的“.obj”文件的路径。
  • 修改Extra File Paths的Size值为“2”,并添加另外2个文件的路径,即FireTruckII.mtl和FireTruckII.jpg。
  • 设置Name属性和Scale属性,将跟踪物体改为FireTruckII。

跟踪3D物体

  • 将FireTruckII模型拖到ObjectTarget游戏对象下成为其子游戏对象。
  • 修改FireTruckII游戏对象的角度为“90,0,-180”。

跟踪3D物体

运行效果如下:

跟踪3D物体

视频版地址:https://www.bilibili.com/video/BV1yZ4y1W7JL/