Creé un complemento de Unity para Android que usa MLKit. Todo funciona bien hasta que el detector de poses MLKit analiza la imagen:
Task<Pose> result = _pd.process(image) .addOnSuccessListener( new OnSuccessListener<Pose>() { @Override public void onSuccess(Pose pose) { Log.i("MyComppany", "trig OnSuccessListener!"); } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.i("MyComppany", "trig OnFailureListener!"); Log.i("MyComppany", String.valueOf(e)); } });después de lo cual me sale este error:
03-30 12:16:47.318 13171 13171 I MyCompany : com.google.mlkit.common.MlKitException: Mediapipe failed with message: internal: Graph has errors: 03-30 12:16:47.318 13171 13171 I MyCompany : Calculator::Open() for node "posetrackingsubgraph__posedetectionsubgraph__TfLiteInferenceCalculator" failed: RET_CHECK failure (third_party/mediapipe/util/tflite/tflite_model_loader.cc:70) model Failed to load model from path mlkit_pose/pose_person_detector_f16.tfliteEsto sugiere que el tfile se perdió al crear el complemento, pero no estoy seguro de cómo depurarlo más. Cualquier idea es apreciada.
Esto sucedía porque literalmente no tenía el archivo de modelo especificado. Como estaba usando un complemento AAR , tuve que descargar todas las dependencias subyacentes en Assets/Plugins/Android de Unity usando unity-jar-resolver . Después de hacerlo, experimenté una colisión de dependencias, lo que me obligó a eliminar esa dependencia ("com.google.mlkit:pose-detection:17.0.1-beta3") . Al final, resultó que solo tenía una referencia de "com.google.mlkit:pose-detection:17.0.1-beta3" en el complemento de Unity, no todo el contenido.
Como solución, exporté mi proyecto a Android Studio y agregué "com.google.mlkit:pose-detection:17.0.1-beta3" a Gradle. Todo funciona ahora.