AR人體姿態識別,實現無邊界的人機交互( 二 )

  1. 初始化BodySkeletonDisplay,用來獲取骨架數據并將其傳遞給openGL ES,openGL ES將渲染數據并在屏幕上顯示 。
Public class BodySkeletonDisplay implements BodyRelatedDisplay{//此類需要幾個方法//初始化方法public void init(){}//使用OpenGL更新節點數據并繪制 。Public void onDrawFrame(Collection<ARBody> bodies,float[] projectionMatrix){for (ARBody body : bodies) {if (body.getTrackingState() == ARTrackable.TrackingState.TRACKING) {float coordinate = 1.0f;if (body.getCoordinateSystemType() == ARCoordinateSystemType.COORDINATE_SYSTEM_TYPE_3D_CAMERA) {coordinate = DRAW_COORDINATE;}findValidSkeletonPoints(body);updateBodySkeleton();drawBodySkeleton(coordinate, projectionMatrix);}}}//查找有效骨架點private void findValidSkeletonPoints(ARBody arBody) {int index = 0;int[] isExists;int validPointNum = 0;float[] points;float[] skeletonPoints;if (arBody.getCoordinateSystemType() == ARCoordinateSystemType.COORDINATE_SYSTEM_TYPE_3D_CAMERA) {isExists = arBody.getSkeletonPointIsExist3D();points = new float[isExists.length * 3];skeletonPoints = arBody.getSkeletonPoint3D();} else {isExists = arBody.getSkeletonPointIsExist2D();points = new float[isExists.length * 3];skeletonPoints = arBody.getSkeletonPoint2D();}for (int i = 0; i < isExists.length; i++) {if (isExists[i] != 0) {points[index++] = skeletonPoints[3 * i];points[index++] = skeletonPoints[3 * i + 1];points[index++] = skeletonPoints[3 * i + 2];validPointNum++;}}mSkeletonPoints = FloatBuffer.wrap(points);mPointsNum = validPointNum;}}
  1. 獲取骨架點連接數據 , 并將其傳遞給OpenGL ES以便在屏幕上渲染 。
public class BodySkeletonLineDisplay implements BodyRelatedDisplay {//渲染身體骨骼之間的線條 。public void onDrawFrame(Collection<ARBody> bodies, float[] projectionMatrix) {for (ARBody body : bodies) {if (body.getTrackingState() == ARTrackable.TrackingState.TRACKING) {float coordinate = 1.0f;if (body.getCoordinateSystemType() == ARCoordinateSystemType.COORDINATE_SYSTEM_TYPE_3D_CAMERA) {coordinate = COORDINATE_SYSTEM_TYPE_3D_FLAG;}updateBodySkeletonLineData(body);drawSkeletonLine(coordinate, projectionMatrix);}}}}8.具體實現請參考:AR Engine示例代碼-AR Engine | 華為開發者聯盟 (huawei.com)
了解更多詳情>>
訪問華為開發者聯盟官網獲取開發指導文檔華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間了解 HMS Core 最新技術資訊~
【AR人體姿態識別,實現無邊界的人機交互】

推薦閱讀