首页 > 其他分享 >EasyAR4.0使用说明(五)----3D物体跟踪

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

时间:2023-01-04 13:34:45浏览次数:93  
标签:obj 物体 EasyAR4.0 ---- 跟踪 hexagon 模型 3D


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

总体说明

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

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

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

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

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预制件拖到场景中。

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

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

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

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

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

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

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

EasyAR4.0使用说明(五)----3D物体跟踪_增强现实_05

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

EasyAR4.0使用说明(五)----3D物体跟踪_增强现实_06

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

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

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

自制3D物体跟踪

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

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

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

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

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

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

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

EasyAR4.0使用说明(五)----3D物体跟踪_增强现实_09

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

EasyAR4.0使用说明(五)----3D物体跟踪_增强现实_10

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

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

  • 将模型文件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。

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

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

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

运行效果如下:

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

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


标签:obj,物体,EasyAR4.0,----,跟踪,hexagon,模型,3D
From: https://blog.51cto.com/u_15929643/5988320

相关文章

  • self hosted private support chat software use JavaScript remove HTML tags
    ThemainreasonforremovingHTMLtagsinonlinecustomerservicesystemsistopreventmalicioususersfromattackingthewebsiteorotherusersbyinputting......
  • Trick 6: 组合数学小技巧
    求解递推式\(a_n=xa_{n-1}+y\)。分析:换元,加入一个常数\(c\),我们期望得到这样一个结果:\(a_n+c=x(a_{n-1}+c)\)。化简后和上式对应,解得\(c=\dfrac{y}{x-......
  • unity3d,异步加载场景
    很简单,代码如下:usingUnityEngine;usingSystem.Collections;usingUnityEngine.UI;publicclassLoading:MonoBehaviour{publicSliderloading_bar;privateAsyncO......
  • Ansible when: result.stdout.find使用说明【原创】
    0代表成功,-1代表失败when:result.stdout.find('JAVA_HOME')==-1当文件中没有JAVA_HOME关键字时执行,等于失败才执行,结果没有JAVA_HOME关键字时执行when:result.stdout.......
  • unity+高德定位=pokemon go 山寨demo安卓版
    这两周尝试了下用高德地理定位和Unity来做个山寨的pokemongo的demo,只能在安卓下使用。游戏过程视频:​​http://www.bilibili.com/video/av6836823/​​场景一这里是获取......
  • Yyield && scrapy案例:当当网爬取数据 &&开启多管道下载
    yield   开启多管道在setting.py中新开一个管道,pipelines下写详细,注意url地址。 当当网爬取案例importscrapyfromscrapy_dangdang_095.itemsimportScr......
  • 《Unity3D平台AR开发快速上手--基于EasyAR4.0》随书资源和相关说明
    新手《Unity3D平台AR开发快速上手–基于EasyAR4.0》上市了,现在京东和淘宝都有卖。书分为2个部分,第一部分是EasyAR4.0基础内容和使用,第二部分是利用EasyAR的稀疏空间地图做室......
  • spring mobile简单试用
    springmobile是spring新推出的一个用于支持移动浏览的小框架,用起来很简单,和springmvc结合也很方便。首先建立一个springmvc的工程然后,在pom.xml中添加springmobile的支......
  • python 每天一个知识点 第二天
    元组元组和列表的区别:1. 元组与列表类似,不同之处在于元组的元素不能修改2.元组使用小括号,列表使用方括号3,元组没有append(),insert()这样的方法。其他获取元素的方法和......
  • 内置对象
    内置对象基本概念js中的对象分为3种:自定义对象、内置对象、浏览器对象前面两种对象是js基础,属于ES;第三个浏览器对象啊是js独有的,jsAPI讲解内置对象就是指js......