Vuforia在iOS上的再封装
之前用Vuforia做了一些Demo,主要是用Unity实现的。现在有需求要将Vuforia集成到已有的iOS客户端中。事实上Vuforia提供了iOS上的SDK,不过要让客户端同事去集成并实现需求的功能还是有些麻烦的,于是我在官方提供的iOS SDK上又封装了一次,加入了先前做的模型导入和交互的相关工作(可以参考Application3D),形成了更加简单的可配置的静态库。
主要功能
- 方便地实现基于Vuforia的ImageTarget识别;
- 支持Obj格式模型导入;
- 模型的简单交互(旋转,缩放,平移);
- 支持模型和识别datasets的配置;
使用步骤
- 下载或克隆Vuforia-iOS-Lib;
- 配置依赖库
- 去Vuforia官方下载iOS SDK,并解压缩到external-deps文件夹下;
- 运行ARDemo工程的createARLib target
在项目文件夹下会出现新文件夹output
,里面包含新的静态库资源
主要包含:- ARResources.bundle : 包含绘制用的glsl文件;
- include : 包含头文件;
- libAR.a : 新封装的静态库;
- 将以上三个资源添加到工程;
- 配置相关参数初始化
ARViewController
配置:
{
}AR_CONFIG_INIT_FLAG : <Vuforia License Key>, AR_CONFIG_DATA_SETS : [<数据集>...], AR_CONFIG_MODEL : [<模型>...]
数据集:
{
}AR_CONFIG_DATASET_NAME : <数据集名称>, AR_CONFIG_DATASET_PATH : <数据集所在路径>
模型:
{
}AR_CONFIG_TARGET_NAME : <识别体名称>, AR_CONFIG_MODEL_PATH : <模型路径>
通过设置
ARViewController.activeDataSetName
可以激活载入的数据集。
- 在AppDelegate.m的
applicationDidEnterBackground
中释放GL资源
1 | - (void)applicationDidEnterBackground:(UIApplication *)application { if (self.glResourceHandler) { // Delete OpenGL resources (e.g. framebuffer) of the SampleApp AR View [self.glResourceHandler freeOpenGLESResources]; [self.glResourceHandler finishOpenGLESCommands]; } } |
具体的配置可以参考TestARLib工程