正確なランドマークで 3D オブジェクトをレンダリングできるように、ここで ARCore でできることと同じように、mediapipe によって返される各顔ランドマークのモデル ビュー マトリックスを抽出しようとしています。
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 で変換するだけで、正確なランドマークの位置を取得できます。私の質問は、mediapipe によって返される各ランドマーク ポイントの正確なモデル ビュー マトリックスを取得する方法はありますか?