ARToolKit-unity
文章目录
- 前言
- 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相关推荐
- ARToolKit for Unity
ARToolKit for Unity ARToolKit for Unity是一款将ARToolkit的增强现实功能与Unity的游戏图形渲染两个特性结合起来的插件.ARToolkit是一个提供了构 ...
- 【Unity】Unity 2D游戏开发(三)2D游戏常用功能及插件
377节附近开始的2D游戏实例,基础的功能开发可以参考. 碰撞忽略 private void Start() {// 让第八层和第九层忽略碰撞,此段代码可以写在通用脚本内Physics2D.Ignor ...
- [Unity WWW] 跨域访问解决方法
什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...
- unity人物旋转移动代码_Unity3D研究院之脚本实现模型的平移与旋转(六)
123 说: 雨松大大,有个问题想请教一下,我用UNET构建了个小场景,在电脑上可以客户端可以连接到服务器,Windows和Linux都可以,发布到安卓缺连不了,这是问什么呢 说: 求教一下,刚刚接触 ...
- unity课设小游戏_Unity制作20个迷你小游戏实例训练视频教程
本教程是关于Unity制作20个迷你小游戏实例训练视频教程,时长:20小时,大小:3.8 GB,MP4高清视频格式,教程使用软件:Unity,附源文件,作者:Raja Biswas,共97个章节,语言 ...
- steamvr unity 连接眼镜_150度FOV,自研显示方案,Kura公布全新AR眼镜Gallium
去年11月,一家名为Kura的美国AR初创公司就曝光了一款视场角135度.亮度2000nit的AR光波导原型,其视场角和亮度数据远超现有AR方案,当时获了业内广泛关注. 近期,Kura创始人兼CEO ...
- Hololens Unity 开发入门 之 Hello HoloLens
Hololens Unity 开发入门 之 Hello HoloLens~ 本文主要记录 HoloLens Unity 开发入门 ~ 一.说在前面的话 Unity 对 VR AR 甚至 将来的 MR ...
- Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”
导出apk失败 使用unity导出apk文件,会出现提示:需要合适版本的JDK.Android SDK和Android NDK,要找到.下载和安装好合适的版本非常耗费时间, 网上很多教程指出可以直接在 ...
- 学习在Unity中创建一个动作RPG游戏
游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...
- Unity 创建2D平台游戏开发学习教程
了解如何使用C#在Unity中创建您的第一款2D平台游戏 你会学到什么 使用Unity创建2D奥运会 使用可脚本化的对象和单一模式 使用良好的编程实践 创造武器和射弹 使用可脚本化的对象和委托模式创建 ...
最新文章
- 10个必会的 PyCharm 技巧
- Java 未死,依然很牛逼!
- 买衣服送粉丝,人气美女出新招
- getitemdata中参数设置
- 响应键盘delete键的删除功能
- 常用的 css 样式 记录
- mysql xa 演示_mysql的XA事务恢复过程详解
- ajax前台multipartfile,在SpringBoot中使用Ajax方式MultipartFile上传失败
- Python - 遍历列表时删除元素的正确做法
- Codeforces Round #191 (Div. 2) A. Flipping Game【*枚举/DP/每次操作可将区间[i,j](1=i=j=n)内牌的状态翻转(即0变1,1变0),求一...
- vs2015运行项目时出现“编译器失败,错误代码为 1”的解决方案
- salesforce 零基础学习(十八)WorkFlow介绍及用法
- 用C#实现文件夹拷贝
- Springboot thymeleaf i18n国际化多语言选择
- Linux抓包(wireshark+tcpdump)
- 程序员集体意识大爆发:996背后的深问题
- 如何批量调整图片大小?
- cass等距离等分线段的命令键_cad直线均分的命令(CAD等分线段快捷键?)
- 2018 IDEA Intellij 和 DataGrip的激活方式(至10月)
- Java —— 内存泄露排查
热门文章
- 正斜杠和反斜杠怎么记
- vue计算属性computed和侦听属性watch的用法和区别
- java显示65289,如何恰当地安慰别人#65288;二#65289;
- 天津.NET俱乐部 微软Windows 7 社区发布邀请
- 税务合规软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- php 获取cpu,Windows下如何利用PHP获取服务器的CPU和内存参数状态信息
- java计算机毕业设计高校社区生鲜配送系统源码+mysql数据库+系统+lw文档+部署
- 电脑很大,电脑声音很大怎么回事
- ubuntu 卸载微信
- Apple Car 还没问世,苹果已先将 iPhone 拉入汽车战场?