Loading...

2017.

欢迎使用太虚AR

太虚AR致力于通过持续性的新技术研发,让AR开发者有更大的想象和创造空间,产生出更多高质量的AR内容。
如果您初次了解太虚AR,可以从这里开始学习如何使用我们的产品。

开发接口

VOID AR SDK提供接口有三种方式。

方式一:直接调用API方法。例如:

    VoidAR.GetInstance().startMarkerlessTracking();

方式二:重写基类方法或者实现接口(interface)。例如:

     protected override IMarker SetCloudVideoComponent(GameObject markerTarget, GameObject videoPlayTarget, string markerName, string videoPath){
     ... 
     }

方式三:VoidAREvent事件机制。例如:

    AddEventListener(VoidAREvent.FIND, OnFind);


VoidAREvent属性如下:

name:事件名称;

currentTarget:事件目标,可以获取事件派发目标对象。

data:事件数据,比如云资源加载时,data为进度数据。

 

下面为VoidAR SDK的主要功能点提供的开发接口:


1、本地识别

- 识别和丢失接口:

  ImageTarget对象上脚本组件ImageTargetBehaviour提供事件派发机制。

      void Awake() {
          //侦听识别事件
          AddEventListener(VoidAREvent.FIND, OnFind);
          AddEventListener(VoidAREvent.LOST, OnLost);
      }
      //Find事件处理
      void OnFind(VoidAREvent evt){
          Debug.Log("OnFind");
      }
      //Lost事件处理
      void OnLost(VoidAREvent evt){
          Debug.Log("OnLost");
      }

  目标识别成功时派发FIND事件,目标丢失时派发LOST事件。


2、云识别

  云识别需要在ARCamera上添加CloudController脚本组件,CloudController提供了云识别状态,云资源下载,云识别自定义数据处理等接口。

- 云识别数据成功响应:指云服务器已经成功识别了目标,返回识别结果。

        /// <summary>
        /// 云识别数据成功响应
        /// </summary>
        /// <param name="url">资源URL</param>
        /// <param name="name">资源名称</param>
        /// <param name="metadata">扩展数据</param>
        protected override void OnSuccess(string url, string name, string metadata)
        {
            //默认AB模型资源Assetsbundle通过WWW加载,云视频创建视频播放器,
            //可以通过自定义数据实现云识别目标自定义创建(创建完成后,通过VoidAR.GetInstance().addCloudTarget()接口加入到SDK识别)
            base.OnSuccess(url, name, metadata);
            Debug.Log("OnSuccess metadata:" + metadata);
        }

  云平台添加的自定义数据通过此方法获取。
- 设置云视频组件:云视频播放时,可以扩展播放器,处理播放事件

          /// <summary>
          /// 设置云视频组件
          /// 可以设置扩展后的ImageTargetBehaviour和VideoPlayBehaviour(使用Unity5.6原生播放器)
          /// </summary>
          /// <param name="markerTarget">marker目标对象</param>
          /// <param name="videoPlayTarget">视频播放器对象</param>
          /// <param name="markerName">marker图片</param>
          /// <param name="videoPath">云视频路径</param>
          /// <returns>IMarker接口对象</returns>
          protected override IMarker SetCloudVideoComponent(GameObject markerTarget, GameObject videoPlayTarget, string markerName, string videoPath)
          {
              var itb = markerTarget.AddComponent<ImageTargetBase>();
              itb.AddEventListener(VoidAREvent.FIND, OnFind);
              itb.AddEventListener(VoidAREvent.LOST, OnFind);
              itb.SetPath(markerName);
              var vpb = videoPlayTarget.AddComponent<VideoPlayBehaviour>();
              vpb.path = videoPath;
              return itb;
          }

- 消息类事件:

        //云识别目标本地创建完成(开始跟踪)
        AddEventListener(VoidAREvent.COMPLETE, OnComplete);
        //AB资源下载进度
        AddEventListener(VoidAREvent.PROGRESS, OnDownload);
        //异常通知
        AddEventListener(VoidAREvent.ERROR, OnError);


3、VOID SLAM

- 启动和停止接口:需要在跟踪目标GameObject上添加ITricking接口组件,SDK默认实现类为MarkerlessTracking。ITricking接口用于获取SLAM状态,包括异常情况。

       public interface ITricking
       {
          bool GetActive();
          int GetTrackingState();
          //跟踪活动状态
          void SetActive(bool value);
          //跟踪反馈(可以根据stateCode的值判断异常状态,具体参见MarkerlessTracking代码)
          void UpdateTracking(int stateCode);
       }

  SLAM异常状态代码目前有:
  1099:网络错误;
  501:开发者帐号异常,帐号没有填写或者帐号数据不正确;
  101:帐号使用次数超过限制
 
   SLAM使用接口:

      //启用跟踪
      VoidAR.GetInstance().startMarkerlessTracking();
      //停止跟踪
      VoidAR.GetInstance().resetMarkerless();


4、其它

- 录屏接口:运行中录制AR场景为MP4格式的视频,保存到相册,需要在ARCamera上添加VideoRecordBehaviour脚本组件。
  VideoRecordBehaviour脚本组件提供了开启停止录屏功能,并内置了简单GUI。
  Enable GUI:是否开启内置GUI,如果禁用,需要调用录屏方法才能使用:

      //第一次调用开启录屏,再次调用停止录屏
      public void REC(){
        ...
      }

  Android录屏后的视频文件路径为扩展卡DCIM文件夹内,iOS录屏后的视频文件路径为相册。

- 视频播放接口:VoidVideoPlayer脚本组件实现视频播放。

  在视频播放过程中,以下接口可以获取视频播放状态:

     //视频资源准备完毕
     AddEventListener(VoidAREvent.READY, OnReady);
     //播放结束
     AddEventListener(VoidAREvent.END, OnEnd);

  VideoPlayBehaviour脚本实现AR视频控制,需要和ImageTargetBehaviour结合使用,当ImageTargetBehaviour派发FIND和LOST事件时,自动调用VideoPlayBehaviour的响应方法。

  FIND事件:自动执行VideoPlay(),视频开始播放,如果每次识别后都重新开始播放,调用VideoPlay(0);

  LOST事件:自动执行VideoPause(),暂停视频播放。