文件驱动程序示例演示了如何实现一个驱动程序,该驱动程序使用外部相机和外部设备跟踪分别为Vuforia Engine相机帧和设备姿势提供数据。将Vuforia文件驱动程序示例添加到项目中,以便在设备上播放序列。
前提条件
文件驱动程序示例可以从开发人员门户。文件驱动程序配置为加载使用SessionRecorder API录制的MP4文件。嵌入在录音中的设备跟踪姿势与视频轨迹中的摄像机帧一起输入Vuforia Engine。
文件驱动程序示例包括两组示例录制:使用Stones Image Target和序列作为Native。
使用会话记录器API创建自己的序列作为MP4文件,请参阅会话记录器API和录音和放音了解详细信息。
构建驱动程序
请参阅作为包的一部分的README.md中构建文件驱动程序示例的步骤。确保输出文件与您的开发平台相对应。
请参见在Unity中使用文件驱动程序示例用于在Unity中导入文件驱动程序。
添加文件驱动程序
为所需平台构建文件驱动程序后,可以将输出添加到项目中。以下步骤取决于您使用的平台/IDE。
安卓
- 从中为每个所需的体系结构添加libFileDriver.so
build/bin/android
通过修改机器人.mk或CMakeLists.txt文件和build.gradle。选择最适合您的项目的选项:
- 机器人.mk以下为:
添加libFileDriver-预构建
定义机器人.mk文件:
包括$(CLEAR_VARS)LOCAL_MODULE:=libFileDriver-预构建LOCAL_SRC_FILES=[路径-文件系统]/FileDriver/build/bin/Android/Release/$(TARGET_ARCH_ABI)/libFileDriver.so包括$(PREBUILT_SHARED_LIBRARY)
在同一中定义本地模块时机器人.mk
添加libFileDriver-预构建
作为对您的依赖本地共享库
以下为:
- CMakeLists.txt文件以下为:
添加VUFORIA_FILEDRIVER_LIBRARY公司
定义CMakeLists.txt文件文件:
add_library(VUFORIA_FILEDRIVER_library共享导入)set_property(目标VUFORIA_FILEDRIVER_LIBRARY属性导入_LOCATION[path-in-your-filesystem]/FileDriver/build/bin/Android/Release/${Android_ABI}/libFileDriver.so)
在同一时间CMakeLists.txt文件添加文件驱动程序库到您的应用程序:
目标链接库(Vuforia样本${安卓ID_LIBRARY}${LOG_LIBRARY}${GLES3_LIBRARY}VUFORIA_LIBRARY公司VUFORIA文件驱动程序库)
- 等级:
如果使用其中之一机器人.mk或CMakeLists.txt文件您还需要更新您的建筑梯度
将库包含在APK中。在您的应用程序/build.gradle
以下为:
机器人{源设置.main{jniLibs.srcDirs+='[path-in-your-filesystem]/FileDriver/build/bin/Android/Release/'}}
注释:如果您使用的是Android插件4.x版和CMakeLists.txt,则上述更改为建筑梯度
不需要。
-
如果您正在使用Vuforia 10.21,请跳过此步骤。或稍后作为文件驱动程序.jar已从文件驱动程序示例中删除。
添加文件驱动程序.jar从构建/容器到您的Android应用程序项目。在您的应用程序/build.gradle
以下为:
依赖项{实现文件(“[path-in-your-filesystem]/FileDriver/build/bin/Android/Release/FileDrivers.jar”)}
- 从
数据
Android应用程序项目的目录。在您的应用程序/build.gradle
以下为:
机器人{源设置.main{assets.srcDirs+=“[path-in-your-filesystem]/FileDriver/data/stones”}}
- 通过在调用之前添加以下代码,修改应用程序代码以将Vuforia引擎配置为使用驱动程序
vuEngineCreate()
以下为:
VuDriverConfig驱动程序Config=vuDriverConfiguration默认值();driverConfig.driverName=“libFileDriver.so”;driverConfig.userData=nullptr;vuEngineConfigSetAddDriverConfig(配置集,&driverConfig);
超宽带
- 添加文件驱动程序.dll来自构建/bin/uwp到Visual Studio UWP应用程序项目中。
- 导入文件驱动程序.dll到项目的根。记住使用与架构(x64/ARM64)和构建类型(调试/发布)配置相匹配的.dll。
- 单击文件驱动程序.dll并设置属性内容至真的.
- 将数据目录中的示例序列添加到Visual Studio UWP应用程序项目中。例如,要使用“石头”序列:
- 导入文件驱动程序/data/stores/FileDriverRecording.mp4文件到您的项目中。
- 选择文件并设置属性内容至真的.
- 通过在调用之前添加以下代码,修改应用程序代码以将Vuforia引擎配置为使用驱动程序
vuEngineCreate()
以下为:
VuDriverConfig驱动程序Config=vuDriverConfiguration默认值();driverConfig.driverName=“FileDriver.dll”;driverConfig.userData=nullptr;vuEngineConfigSetAddDriverConfig(配置集,&driverConfig);
更改顺序
要选择用于播放的序列,指向文件驱动程序用户数据
对象可以使用驱动程序配置用户数据
参数。
结构文件驱动程序用户数据{const char*sequenceAbsolutePath{};}
- 如果
驱动程序配置用户数据
或driverConfig.userData->sequenceAbsolutePath
为NULL,则文件驱动程序将查找名为文件驱动程序录制.mp4在主要资产位置(取决于平台)。
- 如果
driverConfig.userData->sequenceAbsolutePath
设置为以开头的字符串资产://
,FileDriver将字符串的其余部分解释为主应用程序资产位置中的路径(取决于平台)。
- 任何其他字符串都将被文件驱动程序解释为正常的文件系统路径。
播放控制API
文件驱动程序API公开可用于配置录制的播放行为的播放控件。
支持的控件:
- 播放开始时间
- 播放结束时间
- 循环播放
- 更改播放模式
设置文件驱动程序播放模式()
到FILEDRIVER_PLAYBACK_MODE_RESPECT以实时播放序列,并删除可能的帧,或到FILEDRIVER_PLAYBACK_MODE_WAIT以播放序列,但可能会放慢速度以使引擎保持正常。有关更多详细信息,请参阅标题API文档。它在中提供include/FileDriverPlaybackController。小时文件驱动程序示例包的一部分。
使用播放控制API
- 使用文件驱动程序成功创建引擎后,可以使用检索加载库的本机平台句柄
vuPlatformControllerGetDriverLibraryHandle()
.
- 此句柄用于使用当前平台的本机符号加载机制加载文件驱动程序播放控制器功能(
获取进程地址()
在Windows/UWP上dlsym()
POSIX系统上(称为便携式操作系统接口)。
- 检索到的函数指针用于在任何提供的时间戳配置回放,直到引擎被销毁,从而库被卸载。
注:某些播放控制功能要求在更改生效之前停止并重新启动发动机。
例子:
VuController*平台控制器=nullptr;vuEngineGetPlatformController(引擎和平台控制器);void*handle=nullptr;vuPlatformControllerGetDriverLibraryHandle(平台控制器,&handle);#ifdef_WIN32void*funcPtr=获取ProcAddress(static_cast<HMODULE>(句柄),“文件驱动程序设置播放开始时间”);#其他void*funcPtr=dlsym(句柄,“fileDriverSetPlaybackStartTime”);#结尾使用FileDriverSetTimeFunc=bool(*)(uint64_t时间戳);auto fileDriverSetPlaybackStartTime=reinterpret_cast<FileDriverSetTimeFunc>(funcPtr);文件驱动程序设置播放开始时间(100);