ObsahMOCAP PLUGINČlenové týmu: Jan Keller, Ondřej Jamriška ZadáníNavrhněte plugin pro aplikaci autodesk Motion Builder, který z velké části zautomatizuje čištění MoCap dat přenášených z aplikace Vicon IQ prostřednictvím formátu C3D. Vstupem bude import animovaných transformací markerů (reflexních značek), které budou odpovídat předem stanovené jmenné konvenci. Jmenná konvence by měla být konfigurovatelná. Výstupem bude korektně přiřazený objekt Actor, na který jsou v čase přenášeny transformace z markerů. RešeršeStávající postup mapování markerů získaných z aplikace Vicon IQ na Actora v Motion Builderu je následující:
Náš cíl: Návrh řešeníStudiem dokumentu Motion Builder 2011 SDK Help jsme dospěli k následujícímu postupu:
Nyní máme přístup jak k optickým markerům tak k markerům actora a jejich napojení můžeme provést pomocí funkcí:
ImplementaceNa základě našeho návrhu jsme v jazyce Python implementovali skript „bind_markers.py“. Účel skriptu je automatické napojení optických markerů na markery actora. Párovaní optických a actorových markerů se provádí podle uživatelem definováho vzoru. Tento vzor je vstup pro náš skript a je reprezentován seznamem dvojic (regulární výraz,identifikátor markeru). Optický marker jehož jméno vyhovuje danému regulárnímu výrazu je napojen na marker actora s daným identifikátorem. Předpokládá se že uživatel vyvolá skript ručně v momentě, kdy už je do scény vložený actor a je zarovnaný s optickými markery. Seznam s párovacím vzorem je v tuto chvíli vepsán přímo do skriptu. Vylepšená implementacePrvotní implementaci jsme rozšířili o grafické rozhraní. Párovací vzor se načítá z jednoduchého textového souboru. Soubor je možno vybrat pomocí dialogu. Skript si pamatuje naposled vybraný soubor s párovací vzorem, a to i po ukončení a znovuspuštění MotionBuilderu. Napojení markerů se provádí nad aktuálně vybraným Actorem. Skript je možno vyvolat buď přetažením .py souboru do scény, nebo přímo z menu „Python Tools“ kliknutím na položku „Bind Opticals to MarkerSet“. Vylepšená implementace je ke stažení v balíku bind_opticals.zip. ScreenshotyUkázka souboru s párovacím vzorem
Co se nepodařiloBěhem práce na rozšířené implementaci jsme se pokoušeli implementovat i automatické zarovnání actora s mrakem opticalů. Našim cílem bylo nalézt takovou affinní transformaci, která by minimalizovala vzdálenosti transformovaných pivotů Actora od korespondujících opticalů. Naše snaha ale selhala na tom že jsme pomocí MotionBuilder API nebyli schopni získat některé klíčové informace. Zejména šlo o výchozí lokální rotace jednotlivých částí Actora (chybějící metoda SetDefinitionRotationVector ve tříde FBActor). Ke stažení
Skript bind_markers.py: bind_markers.zip Literatura |