MakeHuman endpoint
This commit is contained in:
parent
1b5f0b0249
commit
5408e231e5
1 changed files with 84 additions and 0 deletions
|
@ -205,6 +205,90 @@ class ScoreControllerProvider implements ControllerProviderInterface
|
||||||
return new JsonResponse(['success' => true, 'message' => "images saved."], 200);
|
return new JsonResponse(['success' => true, 'message' => "images saved."], 200);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$controllers->get('/hits/{hitId}', function(Request $request, Application $app) {
|
||||||
|
|
||||||
|
$hit = $request->attributes->get('hit');
|
||||||
|
|
||||||
|
if(empty($hit)) {
|
||||||
|
return new JsonResponse(['message' => 'Hit not found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new CustomJsonResponse($hit, $app['serializer.json'], 200);
|
||||||
|
})
|
||||||
|
->bind('hit')
|
||||||
|
->convert('hit', function($hit, Request $request) use ($app){ return $app['entity.manager']->getRepository(Models\Hit::class)->find($request->attributes->get('hitId'));});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the hit to a mhpose file for use with MakeHuman
|
||||||
|
*/
|
||||||
|
$controllers->get('/hits/{hitId}.mhpose', function(Request $request, Application $app) {
|
||||||
|
|
||||||
|
$hit = $request->attributes->get('hit');
|
||||||
|
|
||||||
|
if(empty($hit)) {
|
||||||
|
return new JsonResponse(['message' => 'Hit not found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$conversions = [
|
||||||
|
'roll' => [],
|
||||||
|
'pitch' => [],
|
||||||
|
'yaw' => [],
|
||||||
|
'inter_ocular_distance' => [],
|
||||||
|
'mouth_open' => ["JawDropStretched"],
|
||||||
|
'lip_press' => ["Lowerlipup"],
|
||||||
|
'brow_raise' => ["RightOuterBrowUp","LeftOuterBrowUp"],
|
||||||
|
'nose_wrinkler' => ["NasolabialDeepener"],
|
||||||
|
'lip_depressor' => ["Mouthrightpulldown","Mouthleftpulldown"],
|
||||||
|
'brow_furrow' => ["Nosewrinkler"],
|
||||||
|
'attention' => [],
|
||||||
|
'smile' => ["Mouthrightpullup","Mouthrightpulldown","Upperlipup","Lowerlipdown"],
|
||||||
|
'smile' => ["Upperlipstretched"],
|
||||||
|
'inner_brow_raiser' => ["RightInnerBrowUp","LeftInnerBrowUp"],
|
||||||
|
'chin_raiser' => ["ChinForward"],
|
||||||
|
'smirk' => ["MouthLeftPullUp"],
|
||||||
|
'lip_suck' => ["Upperlipbackward","Lowerlipbackward"],
|
||||||
|
'upper_lip_raiser' => ["Upperlipup"],
|
||||||
|
'lip_pucker' => ["Lipskiss"],
|
||||||
|
'lip_pucker' => ["Upperlipforward","Lowerlipforward"],
|
||||||
|
'eye_closure' => ["RightUpperLidClosed","LefttUpperLidClosed"],
|
||||||
|
'engagement' => [],
|
||||||
|
'valence' => [],
|
||||||
|
'dimpler' => ["Mouthrightpullside","Mouthleftpullside"],
|
||||||
|
'cheek_raise' => ["LeftCheekUp","RightCheekUp"],
|
||||||
|
'eye_widen' => ["RightUpperLidOpen","LeftUpperLidOpen"],
|
||||||
|
'jaw_drop' => ["JawDrop"],
|
||||||
|
'lid_tighten' => ["LeftLowerLidUp","RightLowerLidUp"],
|
||||||
|
'lip_stretch' => ["Mouthrightpullside","Mouthleftpullside"],
|
||||||
|
// <!-- platysma?? -->
|
||||||
|
];
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
"license" => "AGPL3",
|
||||||
|
"name" => "hit_{$hit->getId()}",
|
||||||
|
"copyright" => "None",
|
||||||
|
"tags" => [
|
||||||
|
"no tag",
|
||||||
|
"expression"
|
||||||
|
],
|
||||||
|
"author" => "Ruben van de Ven & player {$hit->getGame()->getUser()->getId()}",
|
||||||
|
"unit_poses" => [],
|
||||||
|
"homepage" => "http://emotionhero.com",
|
||||||
|
"description" => "Hit {$hit->getId()} in the Emotion Hero game by player {$hit->getGame()->getUser()->getId()}. Points awarded for hit: {$hit->getScore()}."
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach($conversions as $from => $to) {
|
||||||
|
$value = $hit->getExpressions()->getExpressionScore($from) / 100;
|
||||||
|
foreach($to as $t) {
|
||||||
|
$data['unit_poses'][$t] = isSet($data['unit_poses'][$t]) ? max(1,$data['unit_poses'][$t]+$value) : $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new CustomJsonResponse($data, $app['serializer.json'], 200);
|
||||||
|
})
|
||||||
|
->bind('hit')
|
||||||
|
->convert('hit', function($hit, Request $request) use ($app){ return $app['entity.manager']->getRepository(Models\Hit::class)->find($request->attributes->get('hitId'));});
|
||||||
|
|
||||||
|
|
||||||
return $controllers;
|
return $controllers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue