1

我正在尝试为 mediapipe 返回的每个面部标志提取模型视图矩阵,就像我们可以在此处使用 ARCore 所做的那样,以便我可以在精确的标志处渲染 3D 对象。

使用mediapipe 的人脸几何示例,我可以提取人脸几何,并通过访问 VertexBufferList 中的相应索引来获得每个地标点的粗略估计平移:

                    List<FaceGeometry> multiFaceGeometry =
                            PacketGetter.getProtoVector(packet, FaceGeometry.parser());
                    // Get x, y, z translation to landmark 100
                    x = multiFaceGeometry.get(0).getMesh().getVertexBufferList().get(100*5 + 0);
                    y = multiFaceGeometry.get(0).getMesh().getVertexBufferList().get(100*5 + 1);
                    z = multiFaceGeometry.get(0).getMesh().getVertexBufferList().get(100*5 + 2);

                    MatrixData poseTransformMatrix = multiFaceGeometry.get(0).getPoseTransformMatrix();
                    Matrix.translateM(poseTransformMatrix, 0, x, y, z);

然而,问题是当我尝试移动我的脸时,地标位置不正确。在 ARCore 中,我可以通过获取 centerPose 并像上面一样通过 x、y、z 平移来获得一个漂亮而精确的地标位置。所以我的问题是,有没有办法为媒体管道返回的每个地标点获取精确的模型视图矩阵?

4

0 回答 0