Unity3D 动态地创建识别图
前面介绍了EasyAR的单图识别,它是提前在Unity设置好图片路径的,那么如果我们的图片是存储在服务器上的,那么我们肯定不能直接把服务的图片地址填上去了。这个时候我们可以动态地创建识别图。步骤如下:
1.下载服务器上的识别图;为了避免每次都下载,我们可以根据图片名字来判断本地是否已经存在该图片了,如果不存在我们才加载;
2.复制到persistentDataPath(如果本地已经有该图片了则不需要复制)
3.创建识别图(我这里jc是一个json对象,里面主要是图片的名字,网络路径,模型名字,模型路径,视频名字,视频路径):
behaviour.Name = jc.ImageName;
behaviour.Path = Application.persistentDataPath + “/” + jc.ImageName + “.jpg”;
behaviour.Storage = StorageType.Absolute;//这个是我们识别图路径的格式,这里是绝对路径,Assest的话是代表streamingAssets路径下的相对路径
behaviour.Bind(ARBuilder.Instance.TrackerBehaviours[0]); //如果没有绑定tracker,识别图将不起作用
behaviour.Size = new Vector2(4,4);//这个尺寸我的理解是它会把它底下的模型等物体进行缩放,如果原本一个正方体大小跟识别图大小一样,设置为4,4以后,正方体移到识别图底下以后,正方体就会占识别图的1/4大小(只是指长或宽)。
4.动态创建模型 ,我这里是通过打包assestbundle来实现动态加载模型
void CreateModel(GameObject imageTarget, ImageTargetBehaviour behaviour, WWW w2)
{
GameObject go = Instantiate(w2.assetBundle.mainAsset) as GameObject;
go.transform.localScale = Vector3.one;
go.transform.localPosition = Vector3.zero;
go.transform.parent = imageTarget.transform;
behaviour.OnTargetLost(behaviour); //我们会在targetLost函数里面把识别图下面的物体给隐藏掉,所以我们创建模型以后,需要把它隐藏
}
最新文章
- MongoDB查询转对象是出错Element '_id' does not match any field or property of class
- xml in SQL
- #一周五# win10通用平台,无处不在的Xamarin,msbuild开源,MVP卢建晖的Asp.NET 5系列 (视频)
- Linux下搭建svn服务器(转)
- 使用NSTimer过程中最大的两个坑
- 01.AFNetworking原理及常用操作
- Problem 1016 咒文卷轴 优先队列+前缀和+rmq
- asp.net post方法;对象转json
- JS组件Bootstrap实现弹出框和提示框效果代码
- 【转】Netty那点事(二)Netty中的buffer
- bzoj 2818: Gcd 歐拉函數
- R: for installing package 'RODBC'
- Seek the Name, Seek the Fame(Kmp)
- javascript的模块开发方法;
- 网络基础知识系列:阐述VLAN和Trunk
- ASP.NET MVC 用户登录Login
- PHP的Cookie、Session和跟Laravel相关的几点了解
- C/C++对bool operator <; (const p &;a)const的认识,运算符重载详解(杂谈)
- Bootstrap3基础 page-header 标题下加分割线
- python socket 函数介绍