OptiTrack Motion capture a Blender? Ano! - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Software

OptiTrack Motion capture a Blender? Ano!

9. července 2010, 00.00 | Na mého zaměstnavatele se před časem obrátila jedna vývojářská firma s poptávkou na motion capture systém, který by mohli zapojit do stávající studiové pipeline, jejímž základem je Blender. V komerční sféře nebývá časté, aby vývoj her probíhal na Open Source platformě, kterou Blender 3D je. A aby si k ní vývojářské studio pořídilo plnohodnotný motion capture systém pro snímání jak pohybů postav, tak i obličejové mimiky? Bude to vůbec fungovat?

Kombinace zmíněná v titulku je rozhodně neběžná, pravděpodobně tedy dlužím vysvětlení, jak jsem k ní přišel. Na mého zaměstnavatele se před časem obrátila jedna vývojářská firma s poptávkou na motion capture systém, který by mohli zapojit do stávající studiové pipeline, jejímž základem je právě Blender. V komerční sféře nebývá časté, aby vývoj her probíhal na Open Source platformě, kterou Blender 3D je. A aby si k ní vývojářské studio pořídilo plnohodnotný motion capture systém pro snímání jak pohybů postav, tak i obličejové mimiky? Bude to vůbec fungovat?

Požadavek „aby to spolu fungovalo“ byl pro zadavatele zakázky logicky zásadní, podmínkou tedy bylo, aby nasnímaná pohybová data bylo možné po zpracování ukládat v jednom z datových formátů podporovaných Blenderem, tedy .bvh nebo .c3d. Oba jsou však naštěstí dnes velmi rozšířené a prvně jmenovaný je v podstatě standardem pro motion capture systémy. Významnou roli při rozhodování hrála samozřejmě také cena, díky které nakonec zvítězilo řešení postavené na hardware a software OptiTrack. Na základě výrobcem poskytovaných ukázkových dat jsme v Blenderu prakticky ověřili a předvedli, že „to funguje“ a bylo rozhodnuto.

Hardware

Systém nazvaný OptiTrack, od americké společnosti Natural Point, je pravděpodobně cenově nejdostupnější motion capture systém na trhu, jeho cena začíná těsně pod 6 000 USD. Právě tuto základní sadu si dnes představíme, navíc ještě s příslušenstvím pro zmiňované snímání mimiky. Najdeme v ní vše, co potřebujeme k provozu systému:


Základní OptiTrack sada. ©NaturalPoint Inc.

  • 6 kamer
  • kamerové stojany pro snímání celého těla (6) a obličeje (3), včetně příslušných stavitelných hlav
  • 2 OptiHub-y, což jsou v podstatě napájené USB huby, které zajišťují připojení kamer k PC, jejich napájení a synchronizaci
  • kvalitní kabeláž pro propojení kamer, OptiHub-ů a PC + nezbytná sada stahovacích pásků
  • HW klíč k oblužnému SW Arena (SW samotný je potřeba stáhnout ze stránek výrobce)
  • oblek pro upevnění markerů na herce
  • sada markerů na tělo a obličej
  • pomůcky pro kalibraci systému
  • jednoduchý návod

Potřebujeme již jen PC s operačním systémeme Windows XP a vyšším, ke kterému celý systém připojíme. Hardwarové požadavky Areny nejsou nijak závratné, popisovaná sada bez problému pracovala s obyčejnými laptopy s dual-core 2GHz CPU a 2GB RAM.

Jedná se o optický motion capture systém, to znamená, že pohyb herce/herců v prostoru je snímán kamerami, které v reálném čase vyhodnocují jeho/jejich pozici na základě vzájemné pozice 34 reflexivních značek, tzv. markerů, které jsou připevněny na speciálním obleku, resp. přímo na obličeji při snímání mimiky. Značky jsou použity pasivní – pouze odrážejí světlo v patřičné části spektra zpět do kamer. Pro co největší odrazivost ve všech směrech mají kulovitý tvar, jejich velikost je 1,6 cm v průměru pro snímání celého těla a 3 mm pro snímání obličeje. Větší markery každá z kamer údajně detekuje až na vzdálenost 7mi metrů, v praxi se však dodržuje výrobcem doporučené rozmístění, kterým je pro šestikamerový systém kruh o průměru 3 – 6 m pro snímání celého těla, pro snímání obličeje se pak používá půlkruhové rozestavení ve vzdálenosti 60 – 100 cm:


Doporučené rozmístění kamer. ©NaturalPoint Inc.

Kamery

kamery
Kamera V100R2. ©NaturalPoint Inc.

Základem systému je šest kamerek výrobcem označovaných jako V100R2, které rozměrem a tvarem odpovídají zhruba kompaktnímu digitálnímu fotoaparátu. Robustní červené hliníkové pouzdro ukrývá černobílý CCD snímač o rozlišení 640x480 pixelů a maximální snímkovací frekvenci 100Hz. Každá kamera je dále osazena vlastním CPU, které zajišťuje vyhodnocení obrazu (určení pozice markerů ve snímaném prostoru) a synchronizaci snímání s ostatními kamerami. Kamerky také umějí předávat do řídícího PC nezpracovaný obraz, v takovém případě CPU tento video stream komprimuje pomocí MJPEG kodeku.

CCD „kouká na svět“ skrze poměrně velký a světelný objektiv (výrobce udává F1,6 pro standardní objektiv s ohniskovou vzdáleností 4,5 mm). Objektivy samotné jsou výměnné, dostupný je ještě širokoúhlý s ohniskovou vzdáleností 3,5 mm a také „teleobjektiv“ 5,5 mm. Výběr objektivu záleží na prostorových dispozicích místnosti, ve které se bude snímat. Kolem objektivu je rozmístěno celkem 26 infračervených LED, kterými si kamery osvětlují scénu, zbylé místo pak zabírá segmentový displej sloužící k zobrazení pořadového čísla kamery po zapojení systému.

Z boku pak najdeme již jen mini-USB konektor pro připojení k dodávanému USB hubu a 3,5mm jack pro volitelný synchronizační kabel. Standardně probíhá synchronizace přes USB a řídí ji elektronika v dodávaném hubu, tento konektor je zde pro případ použití s běžnými huby.

Na spodní straně se nachází stativový závit pro uchycení na stojan, na zadní pak čtveřice metrických závitů pro případnou montáž na nějakou nosnou konstrukci, obklopující celý snímaný prostor. Maximální počet kamer v systému je v současnosti 24, minimum je 6. Pro snímání dvou herců zároveň je pak potřeba mít kamer alespoň 12.

OptiHub

Již jsem se zmínil o USB hubu, který je součástí sady. Tedy přesněji řečeno, v sadě jsou dva, každý zvládne obsloužit až 6 kamer. Dva se i v základním šestikamerovém systému používají proto, aby se usnadnilo zapojení a vedení kabeláže – už při snímání prostorů o průměru cca 4 m by kabely od kamer nedosáhly při zapojení do jediného hubu nikam jinam, než do středu snímané oblasti (protože norma USB 2.0 stanoví maximální délku propojovacího kabelu na 5 m), což by bylo značně nepraktické. Takto je možné kamery rozdělit do trojic, například pro pravou a levou stranu, a umístit huby někam, kde nebudou překážet. Pro zajištění synchronizace je ještě potřeba je mezi sebou propojit synchronizačním kabelem, který však nemá délkové omezení; v sadě je 10 m, což se ukázalo jako zcela dostatečná délka.

Stojany a další příslušenství

Aby bylo kamery jak umístit do prostoru, je součástí sady 6 teleskopických stojanů s příslušnými stavitelnými hlavami. Stojany jsou původně určené pro nesení reproduktorů, o jejich stabilitu nebo pevnost se tak není třeba bát. Hlavy poté umožňují ustavení kamer ve svislé nebo vodorovné poloze (senzor na výšku x senzor na šířku) a také naklápění a natáčení pro přesné zaměření kamer na střed snímaného prostoru. Stojany samotné jsou výškově stavitelné v rozmezí cca 120 – 290 cm. Pro snímání obličeje je pak přibalena ještě trojice malých trojnožek a šestice k nim náležících menších hlav.


Hlava velkého stojanu osazená kamerou. ©Mind Technology s.r.o.

Zprovoznění systému

Po rozmístění stojanů, osazení hlav a kamer, zapojení a vyvázání kabeláže a propojení s PC následuje kalibrace. Ta se provádí z prostředí software s názvem Arena, bez kterého je mimochodem veškerý hardware prakticky nepoužitelný. Na povel Areny se zapnou kamery a poté lze přistoupit k vlastní kalibraci, kterou nás provede jednoduchý průvodce a postupně pomůže v nastavení parametrů snímání a zpracování obrazu v kamerách a vymezení hranic snímaného prostoru.

Postup je následující: nejprve se do středu snímaného prostoru umístí kalibrační pomůcka, což je kovový dílec připomínající tvarem i velikostí příložník, na nějž jsou upevněny tři markery. Podle něj se doladí nasměrování kamer a také parametry zpracování obrazu tak, aby byly detekovány pouze tři markery a nedocházelo k „falešným poplachům“, tedy situacím, kdy je za marker považován například odlesk světla z lesklých povrchů v místnosti. V této fázi lze využít zobrazení video streamu přímo z kamery, které může pomoci odhalit zdroj těchto chyb. Krom toho se některé dají odstínit třemi nastavitelnými parametry snímání – prahovou hodnotou, od které je bod v obraze s určitým jasem vyhodnocen jako odraz od markeru, citlivostí zpracovávajícího SW v kameře na tyto odrazy a v poslední řadě parametrem Intensity, který se chová podobně jako clona na fotoaparátu, tedy reguluje množství světla dopadajícího na čip; ovšem nikoliv fyzicky, ale pouze na úrovni SW kamery. Tyto tři parametry je možné nastavit jak globálně pro všechny kamery, tak pro jednotlivé kamery zvlášť (např. míří-li jedna proti oknu apod.)

kalibrace
SW Arena během kalibrace. © NaturalPoint Inc.

Jakmile jsou kamery nastaveny, lze přistoupit k poslednímu kroku, kterým je vymezení snímaného prostoru. To se provádí pomocí další pomůcky osazené markery, která je v angličtině nazývána Wand a vypadá asi jako značně prořídlé hrábě. Já jsem ji překřtil na kouzelnou hůlku, protože její úloha spočívá v tom, že jí člověk drží v ruce, pohybuje se ve snímaném prostoru a máchá s ní jako Harry Potter. Kamery snímají pohyb markerů osazených na konci této hůlky po dobu cca dvou minut a řídící PC poté z nahraných dat určí vzájemnou pozici kamer a také hranice snímaného prostoru, který má tvar přibližně polokoule. Poté zbývá určit pozici kamer v prostoru vůči vodorovné rovině, což se děje opět přiložením kalibrační pomůcky do středu plochy. Kalibraci není radno odbýt, jinak bude docházet k chybám ve snímání, budou se objevovat zdvojené detekce („duchové“), nebude správně určená vzájemná pozice kamer a podobně. Naštěstí lze její výsledky uložit a nahrát s každým novým projektem, pokud nezměníme rozestavení kamer.

„Historka z natáčení:“ při kalibraci je potřeba dávat pozor, kam a jakou silou se máchá. Můj kolega takto nedopatřením z „kouzelné hůlky“ urazil jeden marker (podotýkám, že celá hůlka včetně držáků markerů je z kovu) poté, co s ní plnou silou narazil do kamerového stojanu; já jsem ho zase málem vzal po hlavě, protože jsem se příliš přiblížil okraji snímaného prostoru.

Snímání a software

Máme zkalibrováno a můžeme snímat. Oblečeme tedy zvoleného (ne)dobrovolníka do speciálního obleku, který má ze všeho nejblíže k těsnému cyklistickému dresu, doslova od hlavy k patě ho polepíme na patřičných místech markery (upevňují se pomocí suchého zipu) a show může začít.


Autor článku v obleku, již osazeném markery. ©Mind Technology s.r.o.

Nahrávat bychom měli začít od tzv. T-pozice, tedy postoje, kdy má herec nohy u sebe a ruce upažené to je kvůli tomu, abychom později mohli snadno jednotlivé markery přiřadit k patřičným částem těla. Délka nahrávání záleží čistě na nás, po jeho skončení si můžeme nasnímanou sekvenci přehrát, zatím pouze jako mrak modů ve scéně. Pomocí dalšího průvodce pak z tohoto mraku zrekonstruujeme kostru pro další použití v 3D programu. Začneme s nastavením T-pozice, kde buď automaticky, nebo ručně přiřadíme markery jednotlivým částem těla (zde automatika občas funguje bez problémů a občas ze záhadných důvodů odmítne spolupracovat zcela, poté je potřeba všechny body přiřadit ručně). Od této chvíle Arena začne zobrazovat jednoduchý 3D model postavy, který se pohybuje přesně podle nasnímaných dat:

skeleton
"Oživlý" 3D model. ©NaturalPoint Inc.

Práce s daty, příprava pro export

Málokdy se ovšem podaří nahrát zcela bezchybná data. Zejména u prudších pohybů nebo složitějších póz snadno dojde k zakrytí markerů jinou částí těla (např. ohyb), čímž marker zmizí ze záběru kamer a tedy i ze scény. Jindy může dojít po krátkém zakrytí k dočasnému prohození markerů, kdy je např. marker na lokti chvilkově rozpoznán jako marker na paži a naopak. V takovém případě poslouží integrovaný editor, který umožňuje zobrazení nasnímaných dat v podobě animačních křivek, které je možné upravovat. Lze tak nechat interpolovat vynechané snímky způsobené zakrytím, opravit prohození atd. Je to činnost náročná na čas a trpělivost obsluhy, ale vyplatí se. Jakmile je tato práce hotova, lze výsledek exportovat v .bvh, .c3d nebo Autodesk .fbx . Výrobce dodává i plug-in pro realtime přenos snímaných dat do Autodesk Motionbuilder-u.

krivky
Úprava nasnímaných dat pro zvolené markery. ©NaturalPoint Inc.

Výše napsané platí pro snímání celého těla, postup je s drobnými obměnami stejný i pro snímání obličeje. Celkově je práce s OptiTrackem snadná, stavbu i obsluhu zvládne jedna obsluha, která díky možnosti nastavit zpoždění nahrávání může být zároveň i hercem. Naučit se pracovat s tímto systémem je možné velmi rychle, zaškolení oblsuhy v použití systému pro snímání jak těla, tak mimiky nám s kolegou trvalo necelý den, a to včetně překonávání problémů při kalibraci.

Povídání o software zakončím jen poznámkou na okraj: dostupné je také SDK, které umožňuje naprogramování vlastní aplikace, která v reálném čase přenáší na 3D model pohyby herce.

Práce s daty v Blenderu

Začneme nejprve s .bvh daty, ve kterých máme uložen pohyb celé postavy. Základem je samozřejmě mít v Blenderu připraven nějaký model – může být low i high poly, fotorealistický i „cartoon“ atd. Jediné, co musí alespoň přibližně odpovídat, jsou tělesné proporce modelu a herce. K němu do scény importujeme (File -> Import -> .bvh) soubor s nasnímanými daty a nastavíme volby importu:

Budeme importovat jako Armature, tedy kostru; Start Frame (počáteční snímek, od kterého se bude importovat) nastavíme dle libosti, například víme-li, že požadovaná akce začíná až na 85. snímku, vepíšeme 85. Velikost (Scale) můžeme nastavit nyní nebo až později standardní cestou v Blenderu, tak jako tak budeme muset kostru natočit, protože zatímco Arena uznává ve 3D zaběhlý standard, kdy osy X a Y jsou šířka a výška, zatímco Z je hloubka, Blender pracuje s prohozenou osou Z a Y. Klikneme tedy na OK a potvrdíme import. Natočíme kostru do správné pozice a následně ji umístíme do modelu, vybereme ho, poté [Shift] + vybereme kostru a pomocí [Ctrl]+[P] zvolíme Parent: to armature; dále zvolíme Name Groups – vytvořit prázdné vertexové skupiny na modelu podle počtu a jmen jednotlivých kostí:

Make Parent

Nyní je kostra nadřazená modelu, jakákoliv transformace aplikovaná na ni se provede i na něm. Pohyb jednotlivých kostí však stále neovlivňuje patřičné části modelu, tudíž ačkoliv se při přehrání animace v 3D okně hýbe, model zůstává stát.

Do vertexových skupin je potřeba přiřadit odpovídající části modelu. Nejrychlejší postup je, pokud si u jednotlivých kostí necháme zobrazovat jejich názvy, poté vybereme model, v Edit mode vybereme část modelu, která má být deformována nějakou kostí a kliknutím na Assign v Edit Buttons jí přiřadíme do Vertex Group se stejným názvem jakou ma ona kost. Řekněme, že máme kost, která se jmenuje LeftArm, tedy levá paže, vybereme tedy vše od levého ramene až po loket, z rozbalovacího menu vybereme Vertex Group LeftArm a kliknutím na Assign přiřadíme:


Opakujeme tento postup tak dlouho, až nám dojdou prázdné skupiny a kosti k přiřazování, poté by se měl model pohybovat správně. Opravu nebo úpravu pohybu modelu je možné provést opět v Edit buttons přeřazením vybraných faces do jiné vertex group.

S daty s nahranou mimikou je to v Blenderu problematičtější. Arena je umí uložit z Blenderu známých formátů pouze jako .c3d, se kterým není na rozdíl od .bvh práce tak přívětivá. Začne to už po zvolení souboru po import, Blenderu bude podle délky nahrávky celkem dlouho trvat, než je do scény vloží; postup importu můžete sledovat v konzolovém okně.

Na další problém narazíme vzápětí; s vysokou pravděpodobností bude importovaná sada Empty objektů někde výrazně mimo střed 3D prostoru. Protože se však motion capture data vložila jako tyto Empty objekty, klíčované na každém snímk u animace, není možné je všechny globálně přesunout ani zmenšit jako v případě kostry z .bvh. Řešením je nadřadit jim pomocí [Ctrl] + [P] např. pomocnou kost nebo Lattice, kterou už poté lze přesunout na správné místo a zmenšením/zvětšením dosáhnout požadované velikosti.

Nyní konečně můžeme přiřadit jednotlivé Empty odpovídajícím částem meshe tak, abychom ho rozhýbali. Vybereme jeden z Empty objektů, poté Shift vybereme model a [Tab] přejdeme do editačního režimu. V něm vybereme vertexy, které mají být řízeny zvoleným řídícím bodem, a [Ctrl] + [H] je s ním spojíme (Hook -> New to selected object):

Jednotlivá spojení řídících bodů a modelu vidíme na paletce Modifiers v Edit Buttons, pokud vybereme model. Zde můžeme nastavovat intenzitu působení na model (slider Force) a její postupný slábnoucí účinek s rostoucí vzdáleností od model (parametr Falloff).:

Tento parametr je individuální podle velikosti modelu a velikosti oblasti ovlivňované tím kterým řídícím bodem, například Empty ovlivňující pohyb očních víček bude mít nastavenu menší intenzitu než ten, který přesouvá horním rtem. Případnou opravu/úpravu je možné provést pomocí volby Reasign [Ctrl] + [H] -> reassign -> název řídícího bodu.

Pokud vás téma zaujalo a chtěli byste si práci s motion capture daty vyzkoušet, společnost Natural Point na svých stránkách poskytuje řadu .bvh a .c3d souborů ke stažení. Tamtéž zde lze nalézt i videoukázky z kalibrace a provozu celého systému.

Na závěr bych rád poděkoval za pochopení svému nadřízenému, p. Řezáčovi, s jehož svolením zde mohu publikovat informace o tomto projektu a využít část obrazové dokumentace a data vytvořená při práci.

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: