添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
酒量大的春卷  ·  PUSH 推送·  6 天前    · 
完美的鸡蛋面  ·  Send push tokens | ...·  4 天前    · 
纯真的石榴  ·  Send event ...·  4 天前    · 
拉风的领结  ·  can't bring wlan0 up ...·  11 月前    · 

Orbbec Pose Unity SDK支持Unity 2018.4及以上版本,支持的平台包括Windows x64和Zora P1 Android 9。

  • 首先需要从 Unity官方网站 下载并安装Unity

  • 接下来在我们的 3D视觉开发者社区 下载最新版本的Orbbec Pose Unity SDK

  • 解压下载下来的SDK包,可以看到里面包含以下内容:

  • OPose-tools文件夹包含Android和Windows平台的算法演示工具

  • OPose-doc.zip中包含算法说明文档

  • OPose-SDK.unitypackage文件是Orbbec Pose Unity SDK包

  • 接入说明

    在安装完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;