// Lot AP2 (Docs/Migration/20_Chaine_Animations.md) : etapes 3 et 5 de la chaine des animations, sans fenetre. // // 1. Pose T : ajuste la pose T de chaque corps sur celle de la reference, ecrit retarget_pose_.txt // (lu par Tools/anim/RetargetPack.py) et controle l'ajustement : segments ajustes <= SeuilPoseT, // reglages gauche / droite symetriques a SeuilSymetrie degres pres, aucun reglage > SeuilReglage degres (SeuilReglageDoigts pour les doigts). // 2. Evaluation : pour chaque clip de reference qui a une copie par corps, a Instants instants, compare la // formule (phase B) et le clip converti a la reference ; ecart pire <= SeuilEval. // Rapports : /rapport_poseT_.json, /eval_.csv (colonnes de la tournee de la sandbox), // /rapport.json. Code de sortie 0 si tous les controles passent, 1 sinon. // // Usage : // UnrealEditor-Cmd.exe -run=LPAnimEval [-ClipDir=/Game/Quaternius/UAL] [-RefClip=A_TPose] // [-Bodies=Bridget:B_,Michael:M_] [-Instants=3] [-PoseDir=] [-Out=] // [-SeuilPoseT=1] [-SeuilSymetrie=0.5] [-SeuilReglage=30] [-SeuilReglageDoigts=45] [-SeuilEval=1] [-Clips=Idle_Loop,Walk_Loop] // [-BodyClipDir=] [-Templates=Bridget:,Michael:] [-PoseOnly] // -BodyClipDir : dossier des clips convertis (defaut : ClipDir) ; les clips source restent dans ClipDir. // -Templates : clip qui fournit le squelette de chaque corps (defaut : /). // -PoseOnly : s'arrete apres l'etape 3 (retarget_pose_.txt, rapport_poseT_.json), ecrit rapport.json // avec "pose_seule": true ; sans clips convertis. Code 1 si l'etape 3 echoue, 0 sinon. #pragma once #include "CoreMinimal.h" #include "Commandlets/Commandlet.h" #include "LPAnimEvalCommandlet.generated.h" UCLASS() class ULPAnimEvalCommandlet : public UCommandlet { GENERATED_BODY() public: ULPAnimEvalCommandlet(); virtual int32 Main(const FString& Params) override; };