zoukankan      html  css  js  c++  java
  • 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函数里面把识别图下面的物体给隐藏掉,所以我们创建模型以后,需要把它隐藏
    }

  • 相关阅读:
    php 计算代码执行时间
    高级php面试题
    MongoDB 或者 redis 可以替代 memcached 吗?
    mysql中myisam,innodb和memory三个存储引擎的区别
    C#发送邮件代码
    使用bootstrap table时不能显示筛选列和分页每页显示的行数
    vue2中,字符串里如何拼接绑定对象
    压缩图片方法
    jquery的ajax方法,在返回中,find方法不起作用
    vue2中,在google浏览器中正常,在ie11中不解析
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/7832242.html
Copyright © 2011-2022 走看看