easyar sdk如何添加拍照功能

??各位大家好,欢迎大家关注我的,我是秦元培,我的博客地址是。到现在为止,我们对EasyAR中的ImageTarget基本上可以说是驾轻就熟了,因此我们这个系列教程可以说是接近尾声了。博主第一次接触AR这个概念是在大学时候读到一本讲解图形视觉的书籍里,相对VR目前华而不实的市场现状,AR技术从实用性和成熟度都能得到较好的保证。可是大家都清楚这些技术背后都是建立在复杂而高深的图形学算法的基础上的,如果想学习AR技术请回归计算机图形学的本源,这就和学习技术要追寻可渲染管线是一样的,所以这个系列完全是博主个人的兴趣使然,希望了解这个技术的可以进行更加深入的探索。这次我们来说说VideoTarget如何实现吧!
EasyAR中对视频的支持
??目前EasyAR对视频的支持主要是通过VideoPlayerBehaviour这个类,这个类继承自一个基类VideoPlayerBaseBehaviour。我们可以将其理解为一个视频播放器组件,只要我们将这个组件添加到一个GameObject上,然后简单填写下参数就可以了。可是这个组件博主在32位下并没有看到实际的效果,虽然说都到了2015年了64位操作系统相对来说更为普及了,可是我觉得支持不支持32位操作系统更多的体现的是一家公司做的态度。既然暂时没有办法看到这里的具体效果,我们本着学习的态度对这个组件有所了解就是了。下面是这个组件的一张截图:
从图中我们可以看到这个组件相关参数的设置,这里选取的视频资源是StreamingAssets目录下的video.mp4这个文件,视频资源的Stroge同样支持App、Assets、Absolute这三种类型,和资源的Stroge是一样的,关于这三种类型的资源路径的问题,我这里不想再重复说了,这个看看文档就知道了。其次会涉及到视频播放方式和视频缩放的相关参数,这些基本上没什么理解上的难度,大家对照着文档反复尝试就知道各自的用途了。博主这里不太理解EasyAR为什么不采用MovieTexture或者Unity3D中针对视频播放提供的相关插件,因为VideoTarget本质上就是把三维换成了可以播放的视频而已,所以大家在前面的基础上创建一个ImageTarget然后再其下面放置一个附加了VideoPlayerBehaviour的的子物体就可以了。官方的示例中提供了两种方式的VideoTarget创建方式,即手动创建和创建。手动创建即我们这里提到的这种方式,而动态创建则是由在运行时期间创建。这两种方式本质上没有什么不同,需要注意的是VideoPlayerBehaviour有一个EnableAutoPlay的选项,该选项被选中后会启用自动播放,即当识别图被识别后自动播放视频、识别图未被识别则暂停播放视频。如果这个选项没有被选中,我们需要在ITargetEventHandle中动手来实现。
增强ImageTarget
??这个增强ImageTarget是指在ImageTarget的基础上融入VideoPlayerBehaviour的功能,因为按照官方的示例来考虑,这两部分功能是独立的,博主希望让大家在制作识别图的时候完全忘记区别ImageTarget和VideoTarget,这样我们可以更为专注地制作识别图,因为视频组件就只是设置参数这一件事情,完全可以一次性搞定,所以我们首先来定义一个VideoTargetBaseBehaviour类,一起来看代码:
using UnityE
using EasyAR;
public class VideoTargetBaseBehaviour : ImageTargetBehaviour,ITargetEventHandler
/// &summary&
/// 视频播放模块
/// &/summary&
private VideoPlayerBehaviour videoP
/// &summary&
/// 视频文件路径
/// &/summary&
public string VideoP
/// &summary&
/// 是否自动播放视频
/// &/summary&
public bool VideoEnableAutoPlay = true;
/// &summary&
/// 是否允许视频循环
/// &/summary&
public bool VideoEnableLoop = true;
/// &summary&
/// 视频类型
/// &/summary&
public VideoPlayer.VideoType VideoType = VideoPlayer.VideoType.TransparentSideByS
/// &summary&
/// 视频资源类型
/// &/summary&
public StorageType VideoStorage = StorageType.A
/// &summary&
/// 视频是否加载
/// &/summary&
private bool isVideoL
protected override void Start()
//在Start方法中加载视频、隐藏模型
base.Start();
LoadVideo();
HideObjects(transform);
/// &summary&
/// 加载视频
/// &/summary&
private void LoadVideo()
//创建子物体VideoObject并为其添加视频组件
GameObject VideoObject = new GameObject("VideoObject");
videoPlayer = VideoObject.AddComponent&VideoPlayerBehaviour&();
VideoObject.transform.SetParent(transform);
VideoObject.transform.localPosition = Vector3.
VideoObject.transform.localRotation = Quaternion.
VideoObject.transform.localScale = Vector3.
//设置视频组件相关参数
videoPlayer.Storage = VideoS
videoPlayer.Path = VideoP
videoPlayer.EnableAutoPlay = VideoEnableAutoP
videoPlayer.EnableLoop = VideoEnableL
videoPlayer.Type = VideoT
videoPlayer.VideoReadyEvent+=videoPlayer_VideoReadyE
videoPlayer.VideoReachEndEvent+=videoPlayer_VideoReachEndE
videoPlayer.VideoErrorEvent+=videoPlayer_VideoErrorE
videoPlayer.Open();
videoPlayer.Play();
#region 视频组件相关事件定义
public virtual void videoPlayer_VideoErrorEvent(object sender, System.EventArgs e)
public virtual void videoPlayer_VideoReachEndEvent(object sender, System.EventArgs e)
public virtual void videoPlayer_VideoReadyEvent(object sender, System.EventArgs e)
#endregion
/// &summary&
/// 隐藏模型的方法
/// &/summary&
/// &param name="trans"&要隐藏的Transform&/param&
void HideObjects(Transform trans)
for (int i = 0; i & trans.childC ++i)
HideObjects(trans.GetChild(i));
if (transform != trans)
gameObject.SetActive(false);
/// &summary&
/// 显示模型的方法
/// &/summary&
/// &param name="trans"&要显示的Transform&/param&
public void ShowObjects(Transform trans)
for (int i = 0; i & trans.childC ++i)
ShowObjects(trans.GetChild(i));
if (transform != trans)
gameObject.SetActive(true);
/// &summary&
/// 实现ITargetEventHandler接口中的OnTargetFound方法
/// &/summary&
/// &param name="target"&识别目标&/param&
void ITargetEventHandler.OnTargetFound(Target target)
if (videoPlayer)
videoPlayer.Play();
ShowObjects(transform);
/// &summary&
/// 实现ITargetEventHandler接口中的OnTargetLost方法
/// &/summary&
/// &param name="target"&识别目标&/param&
void ITargetEventHandler.OnTargetLost(Target target)
if (videoPlayer)
videoPlayer.Pause();
HideObjects(transform);
/// &summary&
/// 实现ITargetEventHandler接口中的OnTargetLoad方法
/// &/summary&
/// &param name="target"&识别目标&/param&
void ITargetEventHandler.OnTargetLoad(Target target, bool status)
/// &summary&
/// 实现ITargetEventHandler接口中的OnTargetUnload方法
/// &/summary&
/// &param name="target"&识别目标&/param&
void ITargetEventHandler.OnTargetUnload(Target target, bool status)
在这段代码中博主采用了动态创建视频组件的方法,这样我们在制作VideoTarget的时候只需要按照以下步骤即可:
* 在Assets/EasyAR/Prefabs目录下找到EasyAR这个预制体,添加EasyARConfig组件,然后填写KEY。具体请参考系列教程第三篇EasyAR尝鲜系列教程之ImageTarget千呼万唤始出来。
* 在Assets/EasyAR/Prefabs目录中找到ImageTarget这个预制体,然后使用VideoTargetBaseBehaviour组件替换默认的ImageTargetBehaviour组件。下面是博主这里的参数配置截图
这里博主继续选择idback这张图片,这种方法是博主喜欢的方法,大家可以按照个人喜欢的方式来实现,总而言之万变不离其宗,只需要掌握它的原理就好了。在文章中已经提到过这个组件在32位操作系统下无法正常工作,所以这篇文章就不给大家展示相关的截图了,本文暂时先写到这里等有时间测试成功了再来更新这篇文章。如果像博主这样对Unity3D比较熟悉的朋友,可以考虑使用MovieTexture或者其它的方式来替代官方目前的这个方案,好了,这篇文章就是这样了,希望大家喜欢!2015年ARVR圈年终盘点——SDK的盛宴?(AR+VR新的SDK)
claire 16条评论(代做)
支持PC端的SDK
1.ARMedia :
增强现实(AR)技术平台,是一个结构化和模块化的开发框架,拥有独立的实时跟踪引擎和呈现引擎,包括按照特定的体系结构布置的不同软件模块:实时跟踪、实时渲染和接口。其AR技术涉及AEC(建筑、工程和施工)、BIM、设计、出版、市场营销、维护、医药、文化遗产、娱乐休闲等领域。现在有免费版和商业版。支持HTML5
浏览器。支持Android,iPhone,iPad,Web,PC,Mac、Linux平台。
特征:支持GPS、传感器、标注、特征点、二维码标记、支持Unity。
网址:/en/
2.ARMES :
根据用户的需要,ARMES
提供定制化互动解决方案。在专业领域拥有丰富技术经验,如:AR技术、计算机视觉领域、3D传感、计算机图形图像、多点触控、VR技术、微型控制器等一系列用于发展互动解决方案中的核心技术。支持PC端。
特征:标注、特征点
3.Catchoom
Catchoom的目标是消除物理对象和数字世界之间的障碍。catchoom图像识别的目的是让用户以最自然的方式可能的真实世界的对象交互和连接立即在线环境相连的他们看到的物体。最终用户只需从他们的智能手机拍照,并立即连接到网站,在线内容,提供和数字体验。有免费版和商业版。
特征:特征点、内容搜索、视觉API、兼容Unity3D
In2Ar是俄国人写的非常高效的AS3增强现实工具,它能够识别特定的图像并且返回相应的3D参数。使用它可以做出非常酷的人机交互效果。有免费版和商业版。
特征:自然特征、兼容Unity3D
链接:/index.php
特点:标记追踪、图像追踪、三维物体追踪、LBS位置信息追踪、人脸追踪、支持Android、iOS、Windows PC、支持Unity 3D、支持
AR语言(Js+HTML5跨平台编程)、支持独立3D引擎、支持AR智能眼镜、支持云端AR识别、有免费的AR浏览器、有中文教程。
6.ARToolKit:
Artoolkit是一套基于C语言的增强现实系统二次开发包,能够在SGI IRIX,Mac OS X,PC Linux以及PC Windows
95/98/NT/2000/XP等不同操作系统平台上运行。它利用计算机视觉技术来计算观察者的视点相对于已知标识的位置和姿态,并且同时支持基于视觉或视频的增强现实应用。其实时、精确的三维注册功能使得工程人员能够非常方便、快捷的开发增强现实应用系统。免费版和商业版。
目前版本的ARToolKit同时支持 Video(普通视频) 和 标准的see-through AR . Video see-through AR
是指将虚拟图像覆盖到实时视频。标准的see-through
AR要求使用者具备头部现实设备(带在眼睛上的那种摄像设备),并且它有着更加复杂的视频标准和注册要求。
特征:标注、内容API
PTAM是一项增强现实的技术,与以往的类似技术不同,它不需要任何标志,预定义的地图,模板,传感器。此程序基于linux开发,源代码是可以下载到,任何人可以在自己到计算机上运行该程序。基于SLAM的跟踪,包含很多实用模块,代码基于CVD。
网址:http://www.robots.ox.ac.uk/~gk/PTAM/
EasyAR是Easy Augmented
Reality的缩写,是视辰信息科技(上海)有限公司的增强现实解决方案系列的子品牌,意义是:让增强现实变得简单易实施,ARinchina小编也觉得这让客户都能将该技术广泛应用到广告、展馆、活动、app等之中。
特征:标注、特征点、内容API、免费
链接:/view/index.html
HiAR 是顶尖技术团队『亮风台』打造的新一代移动增强现实(AR)开发平台。基于最前沿的计算机视觉、计算机图形学、人机交互等技术,HiAR
提供功能强大、简单易用、平台通用的 AR 技术。
特征:传感器、标注、特征点、内容API、免费
链接:.cn/index.html
新增对Android的支持、缩短第一次加载分析数据时间、修正上版本多目标位置错误的BUG、修正分析Image
target评级错误的BUG、修正无法发布PC版的BUG、系统默认是&识别&模式,不用手动点击&识别&按钮。
不支持PC端的SDK
它利用计算机视觉技术实时识别和捕捉平面图像或简单的三维物体(例如盒子),然后允许开发者通过照相机取景器放置虚拟物体并调整物体在镜头前实体背景上的位置。免费版和商业版
特征:标记追踪、自然特征、内容API、支持Android和iOS、支持AR智能眼镜和云端识别。拥有良好的论坛支持
2.ALVAR :
有两种版本,免费版和商业版。可跟踪多个标记,拥有256个标记。有自然特征。
网址:http://virtual.vtt.fi/virtual/proj2/multimedia/alvar/index.html
3.AndAR :
拥有免费版,有标注。AndAR是一个在Android平台实现增强现实技术的项目,整个项目是在GNU通用公共许可证下发布的,这也意味着你可以在你的任意项目里免费使用,如果你是在相同的许可证下授权你的项目,将意味着你要遵循GPL。由于此项目是开源的,所以欢迎贡献代码。ARToolworks为以ARToolKit为基础的提供商业许可证。
其中包括AR浏览器、图像匹配、3d引擎、对象跟踪、影像追踪、虚拟按键等技术。支持Android和iOS有免费版,不支持Unity。
AR浏览器:2D的POI、视频支持、添加并实时删除单个的POI、可自定义的元素:雷达,雷达点和弹出标签、自定义回调的点击兴趣点或居中的POI、极度优化,在任何设备上运行、强大的性能和内存管理、极轻的观点,流畅和准确的动作、
自定义操作:短信,电话,电子邮件,视频,社交网络等等、对于开发非常简单的API接口、从初学者到专家水平、启动和停止功能,以防止内存或电池饥饿 、
检查示例代码。
图像匹配:添加和删除过程中执行实时图像从池中,而不必再次启动应用程序或重新编译、从移动的资源或从一个URL加载图像、获取精确的匹配几乎任何图像、自定义裁剪:选择要匹配池中的屏幕边框、使用您的自定义图像的ID、利用我们内置摄像头视图的优势,或只是通过拨打我们的进程框架函数来创建你的、选择一个流或图像的单个处理、QR码检测、您可以同时R将一直到4
QR码。你也可以一次读取QR码和图片、无需离线训练。
3d引擎:渲染器:OpenGL ES 2.0;着色器:支持GLSL;照明:点光源,每个像素的动态lighthing。
对象跟踪:超快速目标匹配、360跟踪、快速恢复算法、三维场景重建(流媒体支持)、运行目标定义。
影像追踪:得到坚固和可靠的跟踪和快速恢复、添加和执行时间池中移除影像、从移动的资源或从一个URL加载图像、利用我们内置的摄像头视图或只是创建你自己的看法的优势、使用支持图像流处理。
虚拟按键等技术:获得过虚拟按键坚固和可靠的移动事件、探索无限的可点击区域。
特征:GPS、标注、传感器、面部跟踪、视觉搜索
支持模型格式:3Dmax
5.D&Fusion
Immersion在1999年成立,一直是增强现实技术的翘楚,提供全球最广泛使用的商业增强现实技术平台。通过专利的D&Fusion&软件方案,Total
Immersion整合整时互动三维影像和实时视频串流,突破虚拟世界和现实世界的界线。Total
Immersion相信凡事皆可能,不断致力研究新的方式,让人们在日常生活里互动、发挥表现和享受娱乐
特征:标志、自然特征
兼容Unity3D
免费版和商业版
链接:http://www./
6.Goblin XNA :
是一个专注3D用户界面的平台,包括:移动AR和VR,主要是游戏领域。使用C#语言,基于Microsoft XNA Game Studio 3.1 (up
to Goblin XNA v3.6) 和4.0 (after Goblin XNA v4.0)。Goblin
XNA使用场景图来支持3D场景操作和渲染,支持Vuzix iWear VR920,而且还有一个支持传统2D交互组件的2D GUI 系统。
能向人们展示周边环境的真实图像。只需要将手机的摄像头对准建筑物等,就能在手机的屏幕下方看到与这栋建筑物相关的、精确的现实数据。有趣的是,还能看到周边房屋出租、酒吧及餐馆的打折信息、招聘启事以及ATM等实用性的信息。
Layar具体工作流程:用户开启应用程序,自动启动摄像头,GPS探测到目前所在的位置,罗盘判断摄像头所面对的方向。然后每个内容合作伙伴(CP)自动匹配当前位置的内容,并各形成一个图层。用户可在屏幕侧面通过点击来切换自己感兴趣的图层。通过这些步骤,Layar将现实世界跟虚拟的数字内容完美的结合到了一起,让你通过手机浏览器,就能知晓现实世界。
特征:GPS、传感器、特征点跟踪、内容API、视觉搜索
免费版和商业版
链接:/tools/
8.LinceoVR
LinceoVR 帮助公司减少花费在设计,市场与销售活动上的时间和成本。
它是一款功能强大的设计工具,使用最前沿的照明技术,交互式地展现以超写实计算机图形表现的 CAD 模型。LinceoVR
的创新实时渲染引擎可以为您呈现立体效果,使用最前沿的照明技术来&实时&地生成并展现计算机图形中的超写实图像。这都归功于 HDRI 与 OPENEXR
照明,一种使用清晰与温和百分比渐近阴影(Hard and Soft Percentage Closer
Shadows)算法的阴影动态管理,以及全局照明中崭新的创新技术&&自然照明&&它提供了更为真实的阴影渲染。
LinceoVR 包含了一组先进的可视化效果,包括 DOF,Glow,Lens Flare 与 Auto Iris。实时 HDRI
渲染、实时环境照明、拖放界面、即时结果、高于 50Mpixel 图像输出、完整 HD 视频输出、物理化地修正材质库、简单的 import OpenEXR
环境、可以导入所有 CAS 与 CAD
软件中的几何图形、最低硬件配置要求、设置简单、实时互动式立体查看、材质与几何图形变量、目前本程序以及提供有MAX和犀牛的插件,可以利用MAX2011以上版本直接读取SU模型后导入,或者在SU内输出DBJ格式导入本程序内做交互演示也可。
网址:http://www.seac02.it/
9.Wikitude
Wikitude一站式AR解决方案包括图像识别和追踪、3D模型渲染、视频叠加以及基于地理AR等核心技术无论您希望开发一个、两个或无限量的AR应用,还是需要安卓、IOS、智能手机、平板电脑、智能眼镜、Cordova、Titanium或Xamarin的平台支持,Wikitude
SDK都会满足您所有的开发要求。
Wikitude完全自主研发的AR技术是以核心产品Wikitude AR
SDK以及一系列辅助工具的方式来推向市场的,帮助成千上万的商标持有人、广告公司、开发人员以及AR技术爱好者获取理想的项目目标。Wikitude是全球领先的AR技术供应商,拥有数以万计的开发者账户以及AR应用。免费版和商业版,拥有良好的论坛支持。
特征:标记追踪、图像追踪、三维物体追踪、LBS位置信息追踪、人脸追踪、支持Android、iOS、Windows PC、支持Unity 3D、支持
AR语言(Js+HTML5跨平台编程)、支持 独立3D引擎、支持 AR智能眼镜、支持 云端AR识别、有 免费的AR浏览器、有
中文教程和中文技术支持。这些特征metaio也支持,但是,除了这些重叠特征之外,Wikitude还拥有metaion所没有的,因为他还支持
不限制图片数量的云识别、线下识别+云端识别混合模式、图形化编辑器、中文技术支持。
10.Zenitum Feature Tracker
在计算机视觉领域的研究,因为它适用于识别和跟踪2D图像。我们ZFT将最终使我们能够扩大在世界上所有的二维图像。
他们目前的开发阶段包括加强对即时自然特征标记注册,允许任何人创建&无标记&增强现实体验,无需编程知识。
特征:GPS、标志、自然特征、框架
仅有商业版
链接:/en/research/&
活动 FORUM
公开课 COURSE
企业 INDUSTRY
Tel:+86(029)&&&& +86
(C) COPYRIGHT 2013 ARinChina增强现实中国 | ICP 号-1
ARINCHINA通行证目前EasyAR对视频的支持主要是通过VideoPlayerBehaviour这个类,这个类继承自一个基类VideoPlayerBaseBehaviour。我们可以将其理解为一个视频播放器组件,只要我们将这个组件添加到一个GameObject上,然后简单填写下参数就可以了。可是这个组件博主在32位操作系统下并没有看到实际的效果,虽然说都到了2015年了64位操作系统相对来说更为普及了,可是我觉得支持不支持32位操作系统更多的体现的是一家公司做产品的态度。既然暂时没有办法看到这里的具体效果,我们本着学习的态度对这个组件有所了解就是了。下面是这个组件的一张截图:
从图中我们可以看到这个组件相关参数的设置,这里选取的视频资源是StreamingAssets目录下的video.mp4这个文件,视频资源的Stroge同样支持App、Assets、Absolute这三种类型,和图片资源的Stroge是一样的,关于这三种类型的资源路径的,我这里不想再重复说了,这个看看文档就知道了。其次会涉及到视频播放方式和视频缩放的相关参数,这些基本上没什么理解上的难度,大家对照着文档反复尝试就知道各自的用途了。
博主这里不太理解EasyAR为什么不采用MovieTexture或者3D中针对视频播放提供的相关插件,因为VideoTarget本质上就是把三维模型换成了可以播放的视频而已,所以大家在前面文章的基础上创建一个ImageTarget然后再其下面放置一个附加了VideoPlayerBehaviour的的子物体就可以了。官方的示例项目中提供了两种方式的VideoTarget创建方式,即手动创建和动态创建。手动创建即我们这里提到的这种方式,而动态创建则是由程序在运行时期间创建。这两种方式本质上没有什么不同,需要注意的是VideoPlayerBehaviour有一个EnableAutoPlay的选项,该选项被选中后会启用自动播放,即当识别图被识别后自动播放视频、识别图未被识别则暂停播放视频。如果这个选项没有被选中,我们需要在ITargetEventHandle接口中动手来实现。
增强ImageTarget
这个增强ImageTarget是指在ImageTarget的基础上融入VideoPlayerBehaviour的功能,因为按照官方的示例来考虑,这两部分功能是独立的,博主希望让大家在制作识别图的时候完全忘记区别ImageTarget和VideoTarget,这样我们可以更为专注地制作识别图,因为视频组件就只是设置参数这一件事情,完全可以一次性搞定,所以我们首先来定义一个VideoTargetBaseBehaviour类,一起来看代码:
[C#]&纯文本查看&复制代码
VideoTargetBaseBehaviour : ImageTargetBehaviour,ITargetEventHandler
视频播放模块
&/summary&
&&&&private
VideoPlayerBehaviour videoP
视频文件路径
&/summary&
&&&&public
是否自动播放视频
&/summary&
&&&&public
VideoEnableAutoPlay = true;
是否允许视频循环
&/summary&
&&&&public
VideoEnableLoop = true;
&/summary&
&&&&public
VideoPlayer.VideoType VideoType = VideoPlayer.VideoType.TransparentSideByS
视频资源类型
&/summary&
&&&&public
StorageType VideoStorage = StorageType.A
视频是否加载
&/summary&
&&&&private
&&&&protected
&&&&&&&&base.Start();
&&&&&&&&LoadVideo();
&&&&&&&&HideObjects(transform);
&/summary&
&&&&private
LoadVideo()
&&&&&&&&GameObject
VideoObject = new
GameObject(&VideoObject&);
&&&&&&&&videoPlayer
= VideoObject.AddComponent&VideoPlayerBehaviour&();
&&&&&&&&VideoObject.transform.SetParent(transform);
&&&&&&&&VideoObject.transform.localPosition
= Vector3.
&&&&&&&&VideoObject.transform.localRotation
= Quaternion.
&&&&&&&&VideoObject.transform.localScale
= Vector3.
&&&&&&&&videoPlayer.Storage
&&&&&&&&videoPlayer.Path
&&&&&&&&videoPlayer.EnableAutoPlay
= VideoEnableAutoP
&&&&&&&&videoPlayer.EnableLoop
= VideoEnableL
&&&&&&&&videoPlayer.Type
&&&&&&&&videoPlayer.VideoReadyEvent+=videoPlayer_VideoReadyE
&&&&&&&&videoPlayer.VideoReachEndEvent+=videoPlayer_VideoReachEndE
&&&&&&&&videoPlayer.VideoErrorEvent+=videoPlayer_VideoErrorE
&&&&&&&&videoPlayer.Open();
&&&&&&&&videoPlayer.Play();
&&&&#region
视频组件相关事件定义
&&&&public
videoPlayer_VideoErrorEvent(object
sender, System.EventArgs e)
&&&&public
videoPlayer_VideoReachEndEvent(object
sender, System.EventArgs e)
&&&&public
videoPlayer_VideoReadyEvent(object
sender, System.EventArgs e)
&&&&#endregion
隐藏模型的方法
&/summary&
&param name=&trans&&要隐藏的Transform&/param&
HideObjects(Transform trans)
&&&&&&&&for
i = 0; i & trans.childC ++i)
&&&&&&&&&&&&HideObjects(trans.GetChild(i));
&&&&&&&&if
(transform != trans)
&&&&&&&&&&&&gameObject.SetActive(false);
显示模型的方法
&/summary&
&param name=&trans&&要显示的Transform&/param&
&&&&public
ShowObjects(Transform trans)
&&&&&&&&for
i = 0; i & trans.childC ++i)
&&&&&&&&&&&&ShowObjects(trans.GetChild(i));
&&&&&&&&if
(transform != trans)
&&&&&&&&&&&&gameObject.SetActive(true);
实现ITargetEventHandler接口中的OnTargetFound方法
&/summary&
&param name=&target&&识别目标&/param&
ITargetEventHandler.OnTargetFound(Target target)
&&&&&&&&if
(videoPlayer)
&&&&&&&&&&&&videoPlayer.Play();
&&&&&&&&ShowObjects(transform);
实现ITargetEventHandler接口中的OnTargetLost方法
&/summary&
&param name=&target&&识别目标&/param&
ITargetEventHandler.OnTargetLost(Target target)
&&&&&&&&if
(videoPlayer)
&&&&&&&&&&&&videoPlayer.Pause();
&&&&&&&&HideObjects(transform);
实现ITargetEventHandler接口中的OnTargetLoad方法
&/summary&
&param name=&target&&识别目标&/param&
ITargetEventHandler.OnTargetLoad(Target target, bool
实现ITargetEventHandler接口中的OnTargetUnload方法
&/summary&
&param name=&target&&识别目标&/param&
ITargetEventHandler.OnTargetUnload(Target target, bool
在这段代码中博主采用了动态创建视频组件的方法,这样我们在制作VideoTarget的时候只需要按照以下步骤即可:&
* 在Assets/EasyAR/Prefabs目录下找到EasyAR这个预制体,添加EasyARConfig组件,然后填写KEY。
* 在Assets/EasyAR/Prefabs目录中找到ImageTarget这个预制体,然后使用VideoTargetBaseBehaviour组件替换默认的ImageTargetBehaviour组件。下面是博主这里的参数配置截图
这里博主继续选择idback这张图片,这种方法是博主喜欢的方法,大家可以按照个人喜欢的方式来实现,总而言之万变不离其宗,只需要掌握它的原理就好了。在文章中已经提到过这个组件在32位操作系统下无法正常工作,所以这篇文章就不给大家展示相关的截图了,本文暂时先写到这里等有时间测试成功了再来更新这篇文章。如果像博主这样对比较熟悉的朋友,可以考虑使用MovieTexture或者其它的方式来替代官方目前的这个方案,好了,这篇文章就是这样了,希望大家喜欢!
转载地址 。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:719次
排名:千里之外

我要回帖

更多关于 easyar sdk 的文章

 

随机推荐