Unity¶
开发环境搭建¶
Orbbec Pose Unity SDK支持Unity 2018.4及以上版本,支持的平台包括Windows x64和Zora P1 Android 9。
接入说明¶
在安装完cuda、cuDNN以及TensorRT后需要重新启动电脑或者UnityHub,否则会出现找不到obt.dll的情况
要使用Orbbec Pose Unity SDK,首先需要导入OPose-SDK.unitypackage到Unity工程中,导入后可以看到在Assets中包含以下目录:
Astra文件夹中包含和Astra SDK相关的内容,用于Astra Plus和Astra Mini设备的控制和取流操作
Orbbec文件夹中包含和Orbbec SDK相关的内容,用于Astra+和Femto设备的控制和取流操作
OrbbecPose文件中包含骨架算法相关内容,用于骨架识别:
Plugins文件夹中包含各个平台的算法SDK库
Sample文件夹中包含基本的使用示例
Scripts文件中包含主要的组件
Tools文件夹中包含演示算法主要功能的工具
Orbbec Pose Unity SDK已经将算法的功能都封装成组件,只需要将以下组件挂在到场景中的物体上就可以使用Orbbec Pose SDK的所有功能:
StreamManager组件用于获取设备的数据流,可以选择基础SDK的类型,包括Astra SDK和Orbbec SDK,以支持不同类型的相机
PoseManager组件用于获取算法生成的骨架结果,使用的时候需要先设置一组License(获取方式参考 授权方式 ),还可以设置骨架的跟踪模式,包括Single模式、Double模式和All模式,以及骨架的处理模式是2D模式还是3D模式
注意:Windows平台编译时Architecture需要选择x86_64,Android平台编译时Minimum API Level需要选择API level 23及以上,Target API Level建议选择API level 26,Target Architectures仅勾选ARMv7
SDK使用示例¶
判断初始化是否成功
//判断算法SDK是否初始化成功
PoseManager.HasInitialized();
骨架识别开关
//设置骨架识别开关
PoseManager.EnableBody(true);
//判断骨架识别是否打开
PoseManager.IsBodyEnable();
获取骨架数据
//获取深度骨架数据
PoseManager.GetDepthBodyList()
//获取彩色骨架数据
PoseManager.GetColorBodyList()
此外,还可以通过回调方式获取骨架数据
//监听回调事件
PoseManager.onBodyFrame += OnBodyFrame()
//处理回调帧,获取骨架数据
void OnBodyFrame(Frame bodyFrame)
{
bodyFrame.GetColorBodyList();
bodyFrame.GetDepthBodyList();
}
获取骨架点坐标
bodyList = PoseManager.GetDepthBodyList();
if (bodyList.bodyNum > 0)
{
//遍历bodyList获取每个body
for (int i = 0; i < bodyList.bodyNum; i++)
{
var joints = bodyList.body[i].joints;
//遍历joints获取每个关节点的坐标
for (int i = 0; i < joints.Length; ++i)
{
var jointPos = joints[i].position;
}
}
}