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

metaio SDK 官方教程--官方范例之Interactive Furniture

[复制链接]

metaio SDK 官方教程--官方范例之Interactive Furniture

Luc_metaio 发表于 2014-5-7 11:10:57 浏览:  28781 回复:  6 只看该作者 复制链接


在此范例中,您将学习如何创建一个基本的移动设备应用。其功能包括用手指拖放、缩放和旋转3D模型,并将其置于个性化的图片上。用户可以随机拍摄一张照片,然后立即把它作为跟踪目标图片,并把3D模型(本文中使用metaio man、椅子和电视)放置在此图片上。本范例一共使用三种手势操作,包括拖放、缩放和旋转。这些手势可以共同使用,也可以单独启用。用户可随时对画面进行截屏,也可随时重新开启摄像头。

下面为此范例工作流程:


  • 摄像头启动后使用GPS跟踪
  • 设置坐标系偏移量(如果您使用ORIENTATION_FLOOR,则不需要再设置偏移量)
  • 拍张照片并把其作为跟踪参考图片
  • 加载空跟踪配置文件
  • (使用手势)把3D模型随意摆放在跟踪照片上
  • 截屏
  • 通过清除跟踪参考图片并开启摄像头来重置应用



材料

此范例所用的材料位于/tutorialContent_crossplatform/TutorialInteractiveFurniture/Assets文件夹中,具体如下:


  • metaioman.md2, tv.obj, screen.obj, stuhl.obj分别是metaio man、电视、屏幕和椅子的模型文件
  • 模型的贴图文件名和模型一致,扩展名为png或jpg
  • sintel.3g2是视频文件
  • TrackingData_GPSCompass.xml是GPS跟踪配置文件;而TrackingData_Dummy.xml是空跟踪配置文件



实现方法


  • 设置坐标系偏移量

使用GPS跟踪时,跟踪坐标系原点位于摄像头。所以如果想要方便的观测到跟踪坐标系中的虚拟模型,您需要设置跟踪坐标系偏移量。在AREL中,此偏移量是在XML配置文件中设置的
  1. // java

  2. TrackingValues pose = new TrackingValues();
  3. pose.setTranslation(new Vector3d(0, 0, -140));
  4. m_metaioSDK.setCosOffset(1, pose);
复制代码
  1. // objective c

  2. metaio::TrackingValues pose;
  3. pose.translation = metaio::Vector3d(0, 0, -140);
  4. m_metaioSDK->setCosOffset(1, pose);
复制代码
注意:如果您使用ORENTATION_FLOOR跟踪模式,则不需要再对跟踪坐标系设置偏移量


  • 使用SDK拍摄照片

此功能可通过调用requestCameraImage()来实现,所拍摄的照片会传递到回调函数onCameraImageSaved()中。在AREL中,此功能暂时无法实现,所以我们使用freezeTracking()来停止摄像头工作
  1. // java

  2. m_metaioSDK.requestCameraImage(imagepath, mCameraResolution.getX(), mCameraResolution.getY());
复制代码
  1. // objective c

  2. m_metaioSDK->requestCameraImage([filePath UTF8String], 320, 240);
复制代码
  1. // javascript

  2. arel.Scene.setFreezeTracking(true);
复制代码
回调函数
  1. // java

  2. public void onCameraImageSaved(String filepath)
复制代码
  1. // objective c

  2. - (void) onCameraImageSaved: (NSString*) filepath
复制代码

  • 把照片设置为跟踪参考图片

照片被存到指定文件夹之后,我们就可以用它作为空跟踪的目标参考图片了。要设置图片作为跟踪参考,您可以直接调用setImage(),代码如下:
  1. // java

  2. m_metaioSDK.setImage(filepath);
复制代码
  1. // objective c

  2. m_metaioSDK->setImage([filepath UTF8String]);
复制代码

  • 保存屏幕截图

保存移动设备的屏幕截图有两种方法:您可以直接从view中读取内存,并把它存为图像;更简单的方法是,使用SDK提供的API来截取屏幕画面。截屏时只需调用requestScreenshot(),其参数为截图的存储位置,可以设为空。这样,所截取的屏幕画面能在回调函数onScreenshot()中获取。


使用AREL时,用户可以截取屏幕图画并将其发送到服务器上。由于这种做法和我们所要实现的功能有差别,AREL范例的截屏部分暂时空缺
  1. // java

  2. metaioSDK.requestScreenshot(filepath);

  3.         @Override
  4.         public void onScreenshot(String filepath)
  5.         {

  6.         }
复制代码
  1. // objective c

  2. m_metaioSDK->requestScreenshot([fullPath UTF8String], glView->defaultFramebuffer, glView->colorRenderbuffer);

  3. -(void) onScreenshot:(NSString*) filepath
  4. {
  5. }
复制代码

  • 重新启动摄像头

您可以通过调用startCamera()来重设整个应用并重新开始。这样一来,所设定的跟踪目标参考会被移除,并且摄像头也会重新启动来进行跟踪或拍照。在AREL中,我们可以通过把setfreezeTracking()设置为false来实现类似的效果。
  1. // java

  2. metaioSDK.startCamera(0);
复制代码
  1. // objective c

  2. m_metaioSDK->startCamera(0);
复制代码
  1. // javascript

  2. arel.Scene.setFreezeTracking(false);
复制代码


手势操作

本范例所使用的手势包括拖放、缩放和旋转。在安卓设备上,任何一种手势都用touch事件来处理,根据不同touch事件来辨认不同的手势是程序开发人员的任务。而在IOS设备上,Apple对不同的手势提供相应的识别器,例如UIPInchGestureRecognizer和 UIRotationGestureRecognizer,这就使程序的实现轻松的过。不管您使用哪个平台,我们都建议您使用SDK中的 GestureHandler来对施加于模型的手势进行处理。使用GestureHandler,您可以把模型分组来实现对其轻松管理。如果不愿再对模型施加手势,您也可以轻松把模型从GestureHandler中移除。您可以根据实际情况开启所需要的手势识别类型,而且手势对模型的识别是自动完成的,省去您编写代码的麻烦。


本帖子中包含更多资源

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

x
分享至:
| 人收藏
回复

使用道具 举报

该用户从未签到

沙发
四床被一双鞋 发表于 2014-9-2 19:49:18 只看该作者
luc,你好。请问我下载了metaioSDK的example里为什么没有这个案例呢
回复 支持 反对

使用道具 举报

该用户从未签到

板凳
大大虾 发表于 2014-9-19 16:46:55 只看该作者
Unity里没有这个案例对吧!?
回复 支持 反对

使用道具 举报

该用户从未签到

地板
yaruzhang 发表于 2014-12-10 16:49:46 只看该作者
请问luc:
1。 这个实例是如何运用LLA coordination system?
2。 这个dummy tracking是什么作用?
3。 是否可以不用take a picture也可以从camera中实时得到与地面水平面,垂直平面的信息?
刚刚开始学习AR,请多指导!!
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
cxy 发表于 2015-1-3 12:06:32 只看该作者
luc:
请问这个案例在哪下载?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
走过 发表于 2015-3-13 10:09:50 只看该作者
unity里没有这个案例么?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
漠然丶 发表于 2015-5-5 13:56:14 只看该作者
Unity  里面 没找到 这个案例。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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