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

  • 相关阅读:
    ASP.NET MVC 学习之路由(URL Routing)
    Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码
    linux解压zip文件
    /bin/sh^M:解释器错误:没有那个文件或目录
    mysql查看连接情况
    linux编译qt
    没有可用的软件包 xxx,但是它被其它的软件包引用了
    什么是人月
    qt linux 打包
    linux里安装使用svn
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/7832242.html
Copyright © 2011-2022 走看看