文章目录

  • 前言
  • 1.下载sdk
  • 2.AR初始化场景搭建
    • 2.1 添加控制器
    • 2.2 设置追踪设置追踪标记文件
    • 2.3 设置追踪目标
  • 3.生成识别文件

前言

ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:

1)开源

2)识别项目可以动态添加(详细在后)

3)识别文件可以本地生成

4)目前只能识别图片(目前为.jpg格式)

1.下载sdk

可以自己搜索下载,也可以在Git上下载https://github.com/artoolkit/artoolkit5;解压打开如下图所示:

其中可以把unitypackage直接丢进unity中进行使用。导入后主要用到ARcontroller、ARMaker、AROrigin以及ARTrackedObject四个脚本。

2.AR初始化场景搭建

2.1 添加控制器

在场景中新建空的Gameobject,此游戏物体名称为ARToolKit(插件中自己名称,可更改),并添加脚本ARController;如下图所示:


坑点:第一个参数camera paramater默认为空,但是通过代码追踪进去,代码并没有进行赋值,导致中间参数获取不到(不得不说里面写的有点烂),如果不做处理,当搭建好环境以后运行会提示无法连接摄像头,如上右图所示。追踪进去发现其参数是为了获取Resources目录下的文件生成TextAsset实例,如下图所示,所以找到Resources下ardata目录下的文件,随便将一个文件的名字给它赋值既可以启动摄像头了(初步估计为一些开启不同摄像头的参数)。

2.2 设置追踪设置追踪标记文件

在第一步中游戏物体上继续添加脚本ARMarker,通过这个脚本获取识别图像所需要的数据,如第一步第一张图所示,其中MarkerTag为此图像的标记(可以手动修改),通过标记进行识别追踪的物体,所以下一步需要脚本ARTrackedObject来设定追踪。

ARMarker中type参数选为NFT,表示识别图像的信息文件在StreamingAssets下名字为NFT Dataset Name的三个文件(后续会讲怎么生成)。如果想把路径改为其他,可在ARMarker脚本中查找StreamingAssets路径,把相关参数值进行修改

2.3 设置追踪目标

在场景中继续新建空游戏物体,取名称为Scene root,添加脚本AROrigin,此游戏物体坐标为原点(猜测跟识别后进行游戏物体定位有关),并将其层设定为特定值,比如插件默认的为ARBackground2(可继续使用)此层。在第三步新建游戏物体下新建子游戏物体(设置layer为设定的特定值),取名称为Marker scene,并挂载脚本ARTrackedObject,并把MarkerTag设置为与第二步中ARMarke的值一样,表示通过ARMarker识别此tracketobject;ARMarker与ARTrackedObject成对出现,可重复第二步和第三步进行重复设置不同的识别体。如下图所示,表示可分别对两个图像进行识别

至此,环境搭载结束,当识别到相应图像后处理如下所示(截图来自脚本ARTracketObject),如下代码分别对应当识别到物体,追踪物体以及追踪失败后对应的操作,当当识别到物体时,会对evetReceiver进行消息广播(即eventReceiver以及其子游戏物体脚本中的所有的OnMarkerFound方法触发),并对ARTracketObject所在的游戏物体下的子游戏物体进行激活。所以可以把识别的模型放在此游戏物体下,也可以新建游戏物体,添加脚本,脚本中添加一个OnMarkerFound方法,通过此方法进行一系列的后续操作。追踪物体以及追踪失败对应的运作与上述类似。

3.生成识别文件

此处文件即为ARMarker对应的文件也是生成名为NFT Dataset Name识别文件。

将要识别的jpg文件拖到第一步中getTexData.exe上,按步骤分别输入特征点的级别以及最大最小分辨率即可,getTexData.exe所在目录:arunity5-master\arunity5-master\bin。通过此操所会生成三个后缀为fset、iset和fset3的文件,将这三个文件放在StreamingAssets目录下或者修改后的目录下即可。

PS:由于可以通过程序添加ARMarker和ARTRackerObject,可以具有较高的灵活性,可以方便的进行各种设置。但是,在程序运行过程中,不管是停掉AR模块进行添加还是UnLoad掉相关参数添加都会导致程序跳掉,但是首次添加不会存在此问题,所以每次更改可以通过加载场景的方式跳过此bug

ARToolKit-unity相关推荐

  1. ARToolKit for Unity

    ARToolKit for Unity ARToolKit for Unity是一款将ARToolkit的增强现实功能与Unity的游戏图形渲染两个特性结合起来的插件.ARToolkit是一个提供了构 ...

  2. 【Unity】Unity 2D游戏开发(三)2D游戏常用功能及插件

    377节附近开始的2D游戏实例,基础的功能开发可以参考. 碰撞忽略 private void Start() {// 让第八层和第九层忽略碰撞,此段代码可以写在通用脚本内Physics2D.Ignor ...

  3. [Unity WWW] 跨域访问解决方法

    什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...

  4. unity人物旋转移动代码_Unity3D研究院之脚本实现模型的平移与旋转(六)

    123 说: 雨松大大,有个问题想请教一下,我用UNET构建了个小场景,在电脑上可以客户端可以连接到服务器,Windows和Linux都可以,发布到安卓缺连不了,这是问什么呢 说: 求教一下,刚刚接触 ...

  5. unity课设小游戏_Unity制作20个迷你小游戏实例训练视频教程

    本教程是关于Unity制作20个迷你小游戏实例训练视频教程,时长:20小时,大小:3.8 GB,MP4高清视频格式,教程使用软件:Unity,附源文件,作者:Raja Biswas,共97个章节,语言 ...

  6. steamvr unity 连接眼镜_150度FOV,自研显示方案,Kura公布全新AR眼镜Gallium

    去年11月,一家名为Kura的美国AR初创公司就曝光了一款视场角135度.亮度2000nit的AR光波导原型,其视场角和亮度数据远超现有AR方案,当时获了业内广泛关注. 近期,Kura创始人兼CEO ...

  7. Hololens Unity 开发入门 之 Hello HoloLens

    Hololens Unity 开发入门 之 Hello HoloLens~ 本文主要记录 HoloLens Unity 开发入门 ~ 一.说在前面的话 Unity 对 VR AR 甚至 将来的 MR ...

  8. Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”

    导出apk失败 使用unity导出apk文件,会出现提示:需要合适版本的JDK.Android SDK和Android NDK,要找到.下载和安装好合适的版本非常耗费时间, 网上很多教程指出可以直接在 ...

  9. 学习在Unity中创建一个动作RPG游戏

    游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...

  10. Unity 创建2D平台游戏开发学习教程

    了解如何使用C#在Unity中创建您的第一款2D平台游戏 你会学到什么 使用Unity创建2D奥运会 使用可脚本化的对象和单一模式 使用良好的编程实践 创造武器和射弹 使用可脚本化的对象和委托模式创建 ...

最新文章

  1. 10个必会的 PyCharm 技巧
  2. Java 未死,依然很牛逼!
  3. 买衣服送粉丝,人气美女出新招
  4. getitemdata中参数设置
  5. 响应键盘delete键的删除功能
  6. 常用的 css 样式 记录
  7. mysql xa 演示_mysql的XA事务恢复过程详解
  8. ajax前台multipartfile,在SpringBoot中使用Ajax方式MultipartFile上传失败
  9. Python - 遍历列表时删除元素的正确做法
  10. Codeforces Round #191 (Div. 2) A. Flipping Game【*枚举/DP/每次操作可将区间[i,j](1=i=j=n)内牌的状态翻转(即0变1,1变0),求一...
  11. vs2015运行项目时出现“编译器失败,错误代码为 1”的解决方案
  12. salesforce 零基础学习(十八)WorkFlow介绍及用法
  13. 用C#实现文件夹拷贝
  14. Springboot thymeleaf i18n国际化多语言选择
  15. Linux抓包(wireshark+tcpdump)
  16. 程序员集体意识大爆发:996背后的深问题
  17. 如何批量调整图片大小?
  18. cass等距离等分线段的命令键_cad直线均分的命令(CAD等分线段快捷键?)
  19. 2018 IDEA Intellij 和 DataGrip的激活方式(至10月)
  20. Java —— 内存泄露排查

热门文章

  1. 正斜杠和反斜杠怎么记
  2. vue计算属性computed和侦听属性watch的用法和区别
  3. java显示65289,如何恰当地安慰别人#65288;二#65289;
  4. 天津.NET俱乐部 微软Windows 7 社区发布邀请
  5. 税务合规软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. php 获取cpu,Windows下如何利用PHP获取服务器的CPU和内存参数状态信息
  7. java计算机毕业设计高校社区生鲜配送系统源码+mysql数据库+系统+lw文档+部署
  8. 电脑很大,电脑声音很大怎么回事
  9. ubuntu 卸载微信
  10. Apple Car 还没问世,苹果已先将 iPhone 拉入汽车战场?