在unity3d中动态创建easyAR的imageTarget
来源:互联网 发布:燕郊招聘淘宝客服 编辑:程序博客网 时间:2024/05/22 03:26
首先说EasyAR中重要的几个概念:
ImageTargetBaseBehaviour:
是在AR场景中控制ImageTarget的component。
你需要设置ImageTargetBaseBehaviour为与target相关需要显示的3D内容的父节点。Augmenter与跟踪到的Target之间的相对位置(transform )是由EasyAR控制的。为了使用ImageTargetBaseBehaviour(让tracker跟踪ImageTargetBaseBehaviour内部的target),你必须先使用图片或json设置(setup)这个component然后将这个ImageTargetBaseBehaviour加载到TrackerBaseBehaviour中。
通常有两种方法可以设置(setup)这个component。一个是设ActiveTargetOnStart为true然后设置一些变量(Name、Path、Size和Storage),加载操作将会在MonoBehaviour.Start中被调用。另一个方法是手动调用SetupWith*方法。你也可以在任意时间使用SetupWith*方法重新加载target。在设置(setup)之后你需要把ImageTargetBaseBehaviour加载进TrackerBaseBehaviour。同样也有两种方法,一个是在SetupWith*调用或是MonoBehaviour.Start(当ActiveTargetOnStart为true的时候)之前Bind一个TrackerBaseBehaviour,然后ImageTargetBaseBehaviour会自动被加载进TrackerBaseBehaviour。另一种放方法是手动调用TrackerBaseBehaviour.LoadImageTargetBehaviour或者LoadIntoTrackerBehaviour。
ImageTrackerBaseBehaviour:
(since 1.3.0) 是在AR场景中控制ImageTracker的component。
ImageTargetBaseBehaviour必须先被加载到ImageTrackerBaseBehaviour中它内部的target才能被跟踪。
动态创建代码如下(参考官方demo helloARTarget):
void CreateTarget(string targetName, out EasyImageTargetBehaviour targetBehaviour) { GameObject Target = new GameObject(targetName); Target.transform.localPosition = Vector3.zero; targetBehaviour = Target.AddComponent<EasyImageTargetBehaviour>(); }void Start() { EasyImageTargetBehaviour targetBehaviour; //发现一个ImageTrackerBehaviour,用来跟踪识别imageTarget的。前提是这个ImageTrackerBehaviour必须被添加到了一个object中,否则就得用新建 ImageTrackerBehaviour tracker = FindObjectOfType<ImageTrackerBehaviour>(); // dynamically load from image (*.jpg, *.png) CreateTarget("argame01", out targetBehaviour); //绑定一个tracker,必须绑定了,才能被tracker追踪,然后识别里面的target。 targetBehaviour.Bind(tracker); targetBehaviour.SetupWithImage("sightplus/argame01.jpg", StorageType.Assets, "argame01", new Vector2()); //从Resource中加载prefabs GameObject duck02_1 = Instantiate(Resources.Load("duck02")) as GameObject; //识别出图片后,让模型的坐标跟着imagetarget object的坐标走 duck02_1.transform.parent = targetBehaviour.gameObject.transform;}
静态模型就是通过拖动实现的如下图:
其实里面的组件都是有与之对应的代码的。显示到界面上的属性都是public的,可以拖动。
在视图中新建一个3d模型实例,就对应代码中的
GameObject Target = new GameObject(targetName);
加载代码中已有的prefabs如下:
prefab只是一个文件,不会出现在游戏场景里。
prefab只有两种使用方法,一是在代码里调用Instantiate;另一种是拖到场景里产生一个和他关联的物体(在Hierarchy里显示蓝色)。
具体参考:http://blog.csdn.net/onafioo/article/details/40115515
GameObjectduck02_1 = Instantiate(Resources.Load("duck02"))asGameObject;
给模型添加一个组件就相当于代码中的
targetBehaviour = Target.AddComponent<EasyImageTargetBehaviour>();
让模型的坐标跟着imagetarget object的坐标走:
duck02_1.transform.parent = targetBehaviour.gameObject.transform;
相当于把duck02_1这个gameObject拖放到了targetBehaviour.gameObject(ImageTarget)下面.
- 在unity3d中动态创建easyAR的imageTarget
- ImageTarget动态创建
- Unity系列之EasyAR——ImageTarget
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 【技术】在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- AR场景中怎么动态地交换ImageTarget的检测的模型对象
- [unity基础教程]在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- EasyAR尝鲜系列教程之ImageTarget千呼万唤始出来
- [Unity3d] 如何在Unity3d中创建激光束
- [Unity3d] 如何在Unity3d中创建激光束
- 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统
- easyar unity3d播放视频
- C语言中的预处理详解
- Buffer详解
- [leetcode]44. Wildcard Matching(Java)
- poj 1088 滑雪
- 【Unity学习笔记】——基础篇:多细节层次LOD技术
- 在unity3d中动态创建easyAR的imageTarget
- 【c#】c#中 函数参数的注意事项
- 七月算法深度学习 第三期 学习笔记-第一节 数学基础
- 区间最多约数
- jQuery基础知识
- Java-ZipUtil工具类
- echarts动态绘制折线图
- github设置添加SSH
- 欢迎使用CSDN-markdown编辑器