官方教程 收藏本版 已有2人收藏 +发表新主题
查看: 20696|回复: 0
打印 上一主题 下一主题

metaio SDK官方教程--在Unity平台上将高通项目转换成metaio SDK

[复制链接]

metaio SDK官方教程--在Unity平台上将高通项目转换成metaio SDK

Luc_metaio 发表于 2015-3-10 16:37:58 浏览:  20696 回复:  0 只看该作者 复制链接
在Unity平台上将高通Vuforia项目转换成metaio SDK项目



创建基本Unity应用程序

本教程对比使用metaio SDK和高通Vuforia(高通Vuforia是Qualcomm Connected Experiences公司的软件产品)创建基本Unity AR应用所需要的基本步骤。本教程适用于欲将高通Vuforia项目转换成为metaio SDK项目的用户



  
Qualcomm® Vuforia™     
  
Metaio SDK
  
开发环境的设置
  
  • 下载SDK
  • Unity导入SDKAssets -> Import Package -> Custom Package... ->  'Vuforia™ SDK'.unitypackage
  • 下载并安装metaio SDK
  • Unity导入SDKAssets -> Import Package -> Custom Package... -> 'Metaio  SDK'.unitypackage
  
提示:在
Windows平台上,Unity必须以OpenGL模式(使用-force-opengl标签)开启才能运行metaio SDK
  
创建一个简单的场景
  
  • 创建新场景

添加摄像头

  • 删除Main Camera
  • 添加AR CameraAssets/Qualcomm  Augmented Reality/Prefabs

添加Image Target
  
  • 向场景添加Image TargetAssets/Qualcomm  Augmented Reality/Prefabs
  • License Manager中添加Database
  • 添加一个Target
  • 选择创建的数据库
  • 添加TargetType: Single Image),选择文件(.jpg or .png),设置宽度和名称
  • 下载Database(用于Unity Editor
  • Unity导入DatabaseAssets -> Import Package -> Custom Package… ->  ‘TargetName’.unitypackage
  • 设置Image Target(将Image Target  GameObject中的Database设置为生成的Database(位于ImageTargetBehaviour脚本中),将Image Target设置为创建的Target
  
增添视觉元素

  • 在场景中添加用来视觉化的GameObject,(按需缩放)
  • GameObject设置为Image Target的子类
  
  
  • 创建新场景

添加摄像头
   
  • 移除Main Camera
  • 添加metaioSDKAssets/metaio/Prefabs),这会添加一个新摄像头

添加Image Target(追踪图片)
   
  • metaio Creator中创建新工程,并添加追踪目标(Unity中的Targetmetaio Creator/SDK中的Trackable是一样的)
  • Creator以压缩包形式导出追踪文件(Export  -> Export Tracking Configuration File
  


注意:metaio Creatormetaio推出的具有图形界面的AR场景制作工具,是SDK Pro的随赠产品(也有demo版本)。
  
  • Unity中的StreamingAssets文件夹导入生成的.zip文件
  • .zip文件添加到metaioSDK GameObjectMetaioSDK脚本中
  

  
其他方法:

  • 将图片直接添加到Unity工程包中(StreamingAssets文件夹中)
  • 设置路径(打开metaioSDK GameObject中的tracking.xml,将ReferenceImage更改为图片文件的路径)

增添视觉元素

  • 在场景中添加用来视觉化的GameObject,(按需缩放)
  • metaioSDK GameObject中,将GameObject设置为metaioTracker的子类
  
处理指触事件
  
  • Image Target Object添加一个脚本(我们叫它VBEventHandler),用它来实现IVirtualButtonEventHandler
  • 找到所有需要点击事件的Image Target子类GameObject,对它们添加继承于VirtualButtonAbstractBehaviour的脚本
  • VBEventHandler中定义OnButtonPressed函数
  • GameObject添加GestureHandler.cs脚本,从而使其位移、角度和尺寸能够用指触或点击事件控制

或者

  • 监听指触输入(参考下面代码片段1
  • 选择相应GameObject
  • GameObject放到一个特定的Layer



  • Camera发送RayCast,并检测是否有触点
  
监听追踪事件
  
  • 创建新脚本,用来实现ITrackableEventHandler
  • 定义函数OnTrackingFoundOnTrackingLost
  • 将脚本赋给需要追踪的对象
  • 将对象的DefaultTrackableEventHandler移除
  • 移除metaioSDK对象的metaioCallback
  • 创建一个新脚本并继承metaioCallback,将其赋给任何对象
  • 覆盖onTrackingEvent
  • 读取trackingValues.state
  • 参考下面代码片段2
  
发布应用
  
预览

  • 点击Play来预览

发布

  • 创建License Key
  • License Key添加到QCARBehaviour脚本中的阈值(AR Camera GameObjectApp License Key
  • 请确保安卓或IOS平台的Player Settings已经设置好
  • Build Settings中添加场景
  • 编译并将应用发布到设备上
预览

  • 点击Play来预览

发布

  • 用户需要生成application signature来发布应用。向Windows平台发布的话,请打开appKeys.xml,并使用AppID来生成application signature。而对于安卓或IOS平台,在Player Settings中设置Bundle  Identifier即可



  • metaio开发者官网注册AppIDbundle identifier,从而生成相应的application  signature
  • 将生成的application signature添加到位于metaioSDK  GameObject中的metaio SDK脚本里面的阈值SDK  Signature
  • 请确保安卓或IOS平台的Player Settings已经设置好
  • Build Settings中添加场景
  • 编译并将应用发布到设备上

注意事项:

  • Windows平台上,用户需要使用-force-opengl来开启OpenGL模式
  • IOS应用无法直接通过Unity来发布。您需要在添加所需函数库之后,编译导出的Xcode工程




代码片段

本段罗列上文中所用到的代码片段
  1. 代码片段1:处理点击事件

  2.     C#

  3.   Copy Code

  4. private void handleTouches()
  5. {
  6.   // if there's touch points and the phase is began->try to select the geometry
  7.   if (input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began)
  8.     selectGameObject (Input.GetTouch) (0).position);
  9. }

  10. public void selectGameObject(Vector2 position)
  11. {
  12.   // get a ray from the touch point
  13.   Ray ray = Camera.main.ScreenPointToRay (position);

  14.   // layer mask, Metaioman is on layer 9
  15.   layerMask = 1 << 9;

  16.   // cast a ray on layer 9 if Metaioman has been hit
  17.   if (Physics.Raycast (ray, out hit, 5000, layerMask))
  18.   {
  19.     // do something
  20.   }
  21. }
复制代码
  1. Code Snippet 2: Custom Callback for tracking events
  2. 代码片段2:自定义追踪事件回调函数

  3.     C#

  4.   Copy Code

  5. public class CustomCallback : metaioCallback {
  6.   override protected void onTrackingEvent (List<TrackingValues> trackingValues)
  7.   {
  8.     foreach (TrackingValues tv in TrackingValues)
  9.     {
  10.       if (tv.state.isTrackingState())
  11.       {
  12.         // do something
  13.       }
  14.     }
  15.   }
  16. }
复制代码


支持的平台

Metaio SDK支持在IOS、Windows和Mac OS X上的Unity 32/64位

而且,metaio SDK支持IOS(32/64位)、安卓(32位)和Windows(32位)的原生(非Unity)应用

Metaio SDK可免费使用(带水印),如需去除水印和闪屏,请咨询metaio和代理商

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享至:
| 1 人收藏
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2013-2017 ARinChina-增强现实中国技术论坛   All Rights Reserved.