unity中vuforia如何让摄像头起作用,我加了ARCamera和Imageaddtarget 不起作用,但是开启测试,摄像头没反应...

unity使用vuforia实现模型AR效果_Vuforia教程_中国AR网
&当前位置: &
到高通网址下载案例下载-samples-core-unity-5-5-9,直接解压,解压完之后,就会出现如下图所示的这些unitypackage文件。&双击ImageTargets-5-5-9.unitypackage打开,或者进入unityAssert——》importpackage导入高通Image Targets-5-5-9.unitypackage同理,再导入下载好的模型。这是导入后的Project视图,箭头指向的文件夹是我导入模型资料,右边是模型的一些动作,这个已经封装好了,我们直接拿来用就行。Vuforia文件夹下有个prefabs预制体文件夹打开,将Hierarchy中的Main Camera删除然后拖入Vuforia文件夹frefabs中的ARCamera和ImageTarget把做好的模型(.fbx文件)直接拖入Scene框中使用点击模型,右边出现检视窗口(inspector),可以通过add component添加需要的组件将要运行的动作拖入animation中,下面的size可以自定义动作的个数然后将写好的控制脚本绑定到模型上即可&& & & & &&这里将一系类动作连在一起,加给Controller,然后通过脚本Idle Changer来按顺序切换动作Idle Changer脚本改变模型动作和加载这两个界面按钮双击脚本打开,修改按钮。&将旋转和放大脚本move.cs附给模型,将y轴注释后变成绕y轴旋转添加一个Plane作为模型站立的地板再将Texture中的贴图拉入空白平面接下来将做好的动画添加到的效果中,直接拉入imageTarget即可点击ARCamera,右边检视窗口,Load StonesAndChip和activate记得打勾,记得填上App License Key。点击Imagetarget,到Inspector窗口,选择Database为StonesAndChips,然后选择ImageTarget&&如何获取Key,去vuforia官网注册License Key点击Develop中的License Manager& &&&添加& & &&完成之后点击你的License Key接着导出apk,点击build Settings按顺序点击1,2,3按钮,第一次点击Switch Platform需要等待一段时间在第3步时检视窗口会跳出来一些参数确保identifier跟检视窗口开始的地址相同最后,点击build即可得到apk了演示截图
中国AR网()为更好的服务国内AR技术爱好者 ,现已推出“AR那些事”官方公众号,请在微信公众账号中搜索「armeiti」或者加QQ群:,即可获得每日内容推送和最新的AR开发教程及AR H游戏资源哦!
上一篇: 下一篇:
有话您说 访客日访客日访客日访客日访客日关注51Testing
Vuforia核心功能官方案例详解—VR及AR开发高级教程(6)
发表于: 11:12 &作者:吴亚峰、刘亚志、于复 & 来源:51Testing软件测试网原创
推荐标签:
  第3章 &Vuforia核心功能官方案例详解  前面章节中笔者介绍了增强现实的简介以及Vuforia核心功能的基础知识,使读者对增强现实,以及在开发过程中所要注意的事项有了基本了解。本章将详细讲解Vuforia核心功能的官方案例,通过实践使读者对增强现实的开发有更深层的了解。  3.1 &官方案例下载及ARCamera参数讲解  本节中将着重讲解Vuforia核心功能的官方案例和ARCamera预制件中的参数,因为在每个案例中都会涉及ARCamera预制件的使用,所以笔者在这里将统一讲解。需要读者注意的是,在讲解每个案例的开发步骤之前,笔者都会先展示案例的运行效果,使得开发步骤思路更加清晰。  (1)前面章节中笔者介绍了如何在Vuforia官网注册用户账号,打开Vuforia官网登录用户账号(因为在下载官方案例时需要登录,否则会提示用户登录)。单击导航栏中"Downloads"下的Samples菜单,会显示出官方的案例列表,如图3-1所示。    (2)选择Download for 字样下载官方案例。下载完成后将该压缩包解压到当前文件夹,会显示出所有案例的unitypackage资源包,如图3-2所示。打开Unity 3D游戏开发引擎,在Project面板右击→Import Package→Custom Package,找到资源包所在位置即可将其导入进Unity引擎,如图3-3所示。  (3)资源包导入成功后,为官方的案例添加License Key(前面章节笔者已详细讲解过如何在官网上创建Key,不熟悉的读者可以参考前面章节),再按照Unity导出APK的步骤将官方案例导出到移动设备上即可运行,相关步骤读者可以参考Unity的书籍。   (4)每个案例中都会使用到ARCamera预制件,笔者将详细讲解ARCamera游戏对象上的参数。选中该游戏对象,读者会发现挂载有许多脚本,如图3-4所示。这些脚本用来处理数字眼睛技术、智能地形的控制等。笔者在这里将详细讲解VuforiaBehaviour和DatabaseLoadBehaviour两个脚本。  (5)VuforiaBehaviour脚本下可以为App添加License Key,如图3-5所示。该Key是该应用的标志。笔者建议每一个Key只能应用于一个App,否则在设备上运行时可能会报错。在其下面可以修改摄像机的模式、可识别图像的最大数量等参数,具体内容如表3-1所示。  (6)需要读者注意的是,在将世界中心模式选择为SPECIFIC_TARGET时,需要开发人员手动为其添加一个World Center,如图3-6所示。在改脚本中,图像(物体)目标默认最大的可识别数量为1。在Datbase Load Behaviour脚本中可以设置加载以及激活一个或者多个数据集,如图3-7所示。   (7)与加载并激活数据集相对应的是在ImageTarget Behaviour中选择数据集以及目标图像。以图像识别为例,在ImageTarget Behaviour脚本中修改这两个参数即可,如图3-8和图3-9所示。开发人员可在此参数中添加多个识别目标。    (8)在每个官方案例中,开发人员在双击扫描界面后弹出一个界面,在该界面中可以决定是否使用扩展追踪、摄像机自动对焦,以及调用摄像机的哪个摄像头等功能,如图3-10所示。这些界面功能是用Unity实现的,有兴趣的读者可以参考Unity的相关书籍。   3.2 &扫描图片官方案例详解  扫描图片,顾名思义是通过摄像机扫描图片时在图片上方出现一些设定的3D物体,还可以通过编写程序实现人与物体交互的功能。前面章节中介绍了图片的要求以及一些注意事项,有需要的读者可以阅读前面章节的内容。  3.2.1 预制件通用脚本介绍  在Vuforia官方案例以及其SDK中,将很多需要用到的东西做成了预制件,如ARCamera、ImageTarget、ObjectTarget等,如图3-11所示。在预制件上都实现了其相关功能。但是在不同预制件上会有部分相同的脚本,如图3-12所示。笔者在这里将详细讲解这些脚本。   Turn Off Behaviour脚本的作用是在应用程序运行时禁止场景中的物体的渲染,分别获取游戏对象上Mesh Render和Mesh Filter组件并将其销毁。需要读者注意的是,在官方案例中的大部分脚本都引用了Vuforia命名空间,开发人员在编写脚本时需注意。  代码位置:见官方案例ImageTargets-5-5-9.unitypackage下Assets/Vuforia/Scripts/TurnOff Behaviour.cs  1 & & using UnityE  2 & & namespace Vuforia{ & & & & & & & & & & & //引用Vuforia命名空间  3 & & & public class TurnOffBehaviour : TurnOffAbstractBehaviour{  4 & & & & void Awake(){ & & & & & & & & & & & &//重写Awake方法  5 & & & & & if (VuforiaRuntimeUtilities.IsVuforiaEnabled()){  //是否获取了设备上摄像头的连接  6 & & & & & & MeshRenderer targetMeshRenderer = this.GetComponent&MeshRenderer&();  7 & & & & & & Destroy(targetMeshRenderer); & & //获取游戏对象的MeshRender组件并将其移除  8 & & & & & & MeshFilter targetMesh = this.GetComponent&MeshFilter&();  9 & & & & & & Destroy(targetMesh); & & & & & & //获取游戏对象的MeshFilter组件并将其移除  10 & &}}}}  说明:分别获取游戏对象上的Mesh Render组件和Mesh Filter组件并将其移除。  在摄像机扫描物体对象时,并不是任何时刻都可以扫描到对象(图片、圆柱体以及3D物体等),这时需一个脚本用来处理物体对象是否符合追踪状态的两种情况。在预制件上挂载的Default Trackable Event Handle脚本就是用来处理这种情况,具体代码如下。  代码位置:见官方案例ImageTargets-5-5-9.unitypackage下的Assets/Vuforia/Scripts/ Default TrackableEventHandler.cs  1 & & using UnityE  2 & & namespace Vuforia{ & & & & & & & & & & & & & &//继承ITrackableEventHandler接口  3 & & & public class DefaultTrackableEventHandler : MonoBehaviour, ItrackableEvent  Handler{  4 & & & & private TrackableBehaviour mTrackableB & & &//声明该类的实例  5 & & & & void Start(){  6 & & & & & mTrackableBehaviour = GetComponent&TrackableBehaviour&();  //对类的实例进行初始化  7 & & & & & if (mTrackableBehaviour){  8 & & & & & mTrackableBehaviour.RegisterTrackableEventHandler(this);  //注册追踪事件处理监听  9 & & & & }}  10 & & & &public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus,  11 & & & & &TrackableBehaviour.Status newStatus){ & & & & & & & & & &//实现接口的方法  12 & & & & &if (newStatus == TrackableBehaviour.Status.DETECTED || & //当状态为检测  13 & & & & & &newStatus == TrackableBehaviour.Status.TRACKED || & & &//当状态为追踪  14 & & & & & &newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED){  //当状态为扩展追踪  15 & & & & & & &OnTrackingFound(); & & & & & & & & & & & & & & //执行物体可追踪方法  16 & & & & &}else{OnTrackingLost(); }} & & & & & & & & & & & & //执行物体追踪丢失方法  17 & & & &private void OnTrackingFound(){  //当符合追踪状态时,获取子物体的Render和Collider组件  18 & & & & &Renderer[] rendererComponents = GetComponentsInChildren&Renderer&(true);  19 & & & & &Collider[] colliderComponents = GetComponentsInChildren&Collider&(true);  20 & & & & &foreach (Renderer component in rendererComponents){ //遍历渲染器组件数组  21 & & & & & &component.enabled = & & & & & & & & & & & & //将每个渲染器都置为可用  22 & & & & &}  23 & & & & &foreach (Collider component in colliderComponents){  24 & & & & & &component.enabled = & & & //遍历碰撞器数组并将其置为可用  25 & & & & &}}  26 & & & &private void OnTrackingLost(){ & & &//当不符合追踪状态时,获取渲染组件和碰撞器组件  27 & & & & &Renderer[] rendererComponents = GetComponentsInChildren&Renderer&(true);  28 & & & & &Collider[] colliderComponents = GetComponentsInChildren&Collider&(true);  29 & & & & &foreach (Renderer component in rendererComponents){ &//遍历渲染器组件数组  30 & & & & & &component.enabled = & & & & & & & //将每个渲染器都置为不可用  31 & & & & &}  32 & & & & &foreach (Collider component in colliderComponents){  33 & & & & & &component.enabled = & & & & & & & //遍历碰撞器数组并将其置为不可用  34 & }}}}  第1-4行引用Vuforia命名空间并声明TrackableBehaviour类的实例。  第5-9行重写Start方法,对mTrackableBehaviour变量进行实例化并注册追踪事件处理监听。  第10-16行实现该类继承接口中的方法,当符合摄像机追踪状态时执行物体可追踪方法,否则执行物体追踪丢失的方法。  第17-19行当符合追踪状态时,获取子物体的Render组件和Collider组件。  第20-25行遍历渲染器和碰撞器组件数组,并将其置为可用。  第26-34行表示当物体不符合追踪状态时,在获取渲染组件与碰撞器组件后将其置为不可用。本文选自《VR及AR开发高级教程—基于Unity》第三章,本站经人民邮电出版社和作者的授权。版权声明:51Testing软件测试网获清华大学出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。相关推荐:
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道}

我要回帖

更多关于 addtarget 不起作用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信