请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
搜索

本文来自

EasyAR 教程

EasyAR 教程

1 人已关注

EasyAR引擎使用教程,使用案例。

精选帖子

EasyAR动态加载识别图【转自ificlim的拾荒者】

[复制链接]

27

主题

69

帖子

41万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
416633
52346 terri 发表于 2016-12-27 09:11:44

前面介绍了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函数里面把识别图下面的物体给隐藏掉,所以我们创建模型以后,需要把它隐藏
}



回复

使用道具 举报

changjz 发表于 2017-1-5 17:49:37
感谢分享~正好在研究这方面,谢谢!
回复 支持 反对

使用道具 举报

wuxutian 发表于 2017-2-25 19:19:59
留个标记  慢慢研究
回复 支持 反对

使用道具 举报

songardemo 发表于 2017-5-4 11:25:21
楼主能不能给翻译成更详细的啊,小白不懂unity
回复 支持 反对

使用道具 举报

easyar309 发表于 2017-5-8 09:40:15

留个标记  慢慢研究
回复 支持 反对

使用道具 举报

harytian123 发表于 2017-5-27 16:47:00
如何知道当前扫描的图片的名称?动态加载需要的是根据用户扫描的结果动态加载相应的识别图,而不是按你自己设定好的识别图让用户扫描吧!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表