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

Unity3D 动态地创建识别图的更多相关文章

  1. unity3d 动态添加地面贴图 草地

    TerrainData.splatPrototypes = ]{ new SplatPrototype() { texture=Caodi, //Texture2D的贴图 normalMap=null ...

  2. 于Unity3D动态创建对象和创建Prefab三种方式的原型对象

    于Unity3D动态创建对象和创建Prefab三种方式的原型对象 u3d在动态创建的对象,需要使用prefab 和创建时 MonoBehaviour.Instantiate( GameObject o ...

  3. Unity3d 动态加载场景物件与缓存池的使用

    聊聊Unity3d动态加载场景物件那些事儿. 众所周知,在策划或美术设计完游戏场景地图后,一个场景中可能会存在成千上万个小的物件,比如石头,木箱子,油桶,栅栏等等等等,这些物件并不是游戏中的道具,仅仅 ...

  4. Unity3D ShaderLab 简单的立方体图反射

    Unity3D ShaderLab 简单的立方体图反射 反射是着色器模拟现实环境的一个关键因素,它能使我们的着色器渲染效果更加具备视觉冲击,因为他利用了我们周围的环境, 让着色器反射外界的场景信息并将 ...

  5. Android - 用Fragments实现动态UI - 创建灵活的UI

    当设计程序来支持各种不一样的屏幕尺寸时,可以在不同的布局中重用fragment来根据可用的屏幕大小来优化用户体验. 例如,在手机上可能使用一个fragment来使用单窗口用户体验比较合适.但是,你可能 ...

  6. Unity使用脚本进行批量动态加载贴图

    先描述一下我正在做的这个项目,是跑酷类音游. 那么跑酷类音游在绘制跑道上的时候,就要考虑不同的砖块显示问题.假设我有了一个节奏列表,那么我们怎么将不同的贴图贴到不同的砖块上去呢? 我花了好几个小时才搞 ...

  7. Unity3d之树木创建的参数设定

    Unity3d之树木创建的参数设定 通常Unity3d创建树木经常会创建出很多奇葩的种类=_=,以下是创建出比较正常树木的基本参数 1:> 基本树干形状建立: 选择根建立分枝干设置分支干Di ...

  8. Vue实现长按图片识别图中二维码

    Vue实现长按图片识别图中二维码 思路:要想实现可以识别图片中的二维码,那必定是要将这张图进行上传操作,上传则需要file对象格式.不管是在H5还是APP中,展示的图片都是通过url的方式展示在img ...

  9. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

随机推荐

  1. Day 23 异常处理

    异常处理 一.异常基本形式 # if # def test: # pass # class Foo # pass def test(): ''' 异常的基本类型和相关 :return: ''' try ...

  2. Codeforces 899 B.Months and Years

    B. Months and Years   time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. 深入V8引擎-Time核心方法之win篇(1)

    上一篇的源码看得十分无趣,官方文档跟黑心棉一样渣. 这一篇讲讲windows操作系统上的时间戳实现,由于类的声明,方法解释上一篇都贴过了,所以这次直接上对应版本的代码. windows与mac很不一样 ...

  4. 查看tomcat启动文件都干点啥---Bootstrap.java

    在上一章查看tomcat启动文件都干点啥---catalina.bat,说了在catalina.bat中都走了什么流程,最重要的是,我们得出了如下这段命令: _EXECJAVA=start " ...

  5. todo提纲

    deep&wide为啥work,如何优化特征:详述attention,attention在ctr预估中如何使用,din为啥work?详述transformer,如何应用于ctr预估;item2 ...

  6. Win7如何自定义鼠标右键菜单 添加在此处打开CMD窗口

    将下面文件保存为"右键添加在此处打开CMD窗口.reg"双击导入运行即可 Windows Registry Editor Version 5.00 [HKEY_CLASSES_RO ...

  7. Android开发之WebView具体解释

    概述: 一个显示网页的视图.这个类是你能够滚动自己的Web浏览器或在你的Activity中简单地显示一些在线内容的基础.它使用了WebKit渲染引擎来显示网页,包含向前和向后导航的方法(通过历史记录) ...

  8. SAS学习经验总结分享:篇一—数据的读取

    第一篇:BASE SAS分为数据步的作用及生成数据集的方式 我是学经济相关专业毕业的,从事数据分析工作近一年,之前一直在用EXCEL,自认为EXCEL掌握的还不错. 今年5月份听说了SAS,便开始学习 ...

  9. Ubuntu下载、zsync、安装、常见问题

    下载-镜像地址 http://mirrors.ustc.edu.cn/ubuntu-releases/ http://mirrors.163.com/ubuntu-releases/ Ubuntu 更 ...

  10. webdriver.py--解说

    一.全局操作类 start_session 使用指定的desired capabilities创建一个会话(session)start_client 新建一个webdriver会话session前调用 ...