• Nie Znaleziono Wyników

Proces tworzenia animacji szkieletowej

W dokumencie Index of /rozprawy2/10860 (Stron 114-120)

3. BUDOWA SYSTEMU TŁUMACZĄCEGO

3.3. Wizualizacja gestów języka migowego

3.3.9. Proces tworzenia animacji szkieletowej

Typ danych Jednostka

Liczba ścieżek markerów Częstotliwość rejestracji Liczba ramek

Czas początkowy

Współrzędne markerów, ramka 1 Współrzędne markerów, ramka 2

Tabela 5: Fragment animacji migu „czytać” zapisanego w formacie danych EMT.

Dane zaimportowane do aplikacji Blender, wymagają poddania ich procesowi obróbki. Utworzono w tym celu odpowiednie skrypty, których zadaniem jest sparsowanie danych z pliku „emt” i zapisanie ich w odpowiedniej strukturze oraz poprawa jakości sygnału poprzez interpolację brakujących fragmentów sygnału i jego wygładzenie. W ostatnim kroku dokonuje się proces budowania kompletnej animacji. Wizualnym jej efektem jest przemieszczanie się obiektów kul w przestrzeni 3D względem czasu. Skrypty zastosowane w procesie obróbki danych nie będą prezentowane i omawiane w niniejszej pracy z uwagi na ich dużą objętość. Na poniższym rysunku przedstawiono tor ruchu pojedynczego markera w przestrzeni 3D.

Po zakończeniu importu danych wyznaczane są pozycje i rotacje dla układu kości zaimplementowanego dla awatara.

3.3.9. Proces tworzenia animacji szkieletowej

Dane zarejestrowane techniką motion capture reprezentują pozycje markerów w przestrzeni. Aby uzyskać z nich animację, należy zamienić przestrzenne pozycje markerów na przestrzenne rotacje kości awatara. Do realizacji tego zadania wykorzystano aplikację Blender. W procesie tworzenia animacji aplikacja Blender udostępnia kontenery,

zawierające cechy obiektów używanych do modelowania przestrzeni 3D. Przy pomocy kontenerów można kontrolować procesy przekształcania obiektów. Ułatwiają one automatyczne ustalanie parametrów, takich jak: pozycja, obrót, skala. Kontenery wykorzystywane są również przy określaniu stopnia swobody obiektów, zarówno w globalnym, jak i względnym układzie współrzędnych. Posiadają one również specjalny parametr wpływu (ang. Influence), który określa stopień oddziaływania danego kontenera na obiekt. Ponieważ markery systemu motion capture i kości są obiektami aplikacji Blender, zatem każdy z nich może zawierać kontenery.

Na potrzeby przekształcania pozycji markerów do rotacji kości wykorzystano następujące rodzaje kontenerów:

• Copy location – kontener przekształcania. Ma za zadanie kopiować położenie celu wraz z opcjonalnym przesunięciem (Offset) dla właściciela. W efekcie obydwa obiekty poruszają się razem.

• IK Solver – kontener przeznaczony do śledzenia. Jego zadaniem jest sterowanie łańcuchem kości poprzez wybrany cel. Kontener wykorzystuje w tym celu algorytm odwrotnej kinematyki.

• Locked Track – kontroler śledzenia umożliwiający rotację obiektu. Obiekt śledzi wybrany cel przy użyciu wybranych osi.

• Child Of – kontener relacji. Pozwala tworzyć hierarchię obiektów w relacji rodzic-dziecko. Umożliwia dziedziczenie położenia, rotacji bądź skali innego obiektu. Proces określania rotacji i pozycji kości awatara podzielono na kilka etapów. Zaliczyć do nich można wyznaczanie następujących grup kości: podstawy modelu, kości kręgosłupa, kości szyi, kości przeznaczona do rotacji głowy, kości lewej i prawej kończyny górnej. Nie ma tutaj miejsca na omawianie wszystkich z nich. Z uwagi na to, że proces wyznaczania pozycji i rotacji kości dla układu szkieletowego przebiega analogicznie, uznano za wystarczające, szczegółowe omówienie dwóch wybranych nieco odmiennych przypadków.

A) Wyznaczanie kości podstawy awatara (IK_podstawa)

Kość IK_podstawa jest kością główną, odpowiedzialną za pozycję awatara na scenie. Do markerów określających jej rotację i pozycję należą M0, M1, M2 oraz M3. Określenie pozycji i rotacji tej kości obejmuje kilka etapów:

Utworzenie pomocniczego obiektu Empty105E0 oraz określenie jego pozycji

z wykorzystaniem dwóch komponentów typu Copy Location. Dla ustawień komponentu pierwszego jako cel „kopiowania położenia” został ustawiony marker

M1. Wartość celu komponentu drugiego ustawiono położeniem markera M2.

Parametr wpływu Influence ustawiono na wartość 0.5. Konfiguracja ta sprawia, że obiekt E0 zostaje ustawiony dokładnie w środku pomiędzy markerami M1 i M2, zob. rys. 42. Konfigurację komponentów dla obiektu E0 prezentuje rys. 40. Proces ustalania pozycji obiektów Empty pomiędzy dwoma markerami powtarza się wielokrotnie podczas określania pozycji i rotacji kości układu szkieletowego awatara.

105 Obiekty Empty są pustymi obiektami, tworzonymi ręczenie w aplikacji Blender. Nie posiadają one prawdziwej geometrii, lecz wykorzystywane są jako uchwyty do wielu celów. Atrybutami tych obiektów są przestrzenna pozycja i rotacja.

Określenie pozycji dla obiektów E1 przy użyciu markerów M0 i M3 oraz E2 z wykorzystaniem markerów M2 i M3 oraz E3 uzyskiwane jest w sposób analogiczny jak w powyższym podpunkcie.

Wyznaczanie pozycji dla obiektu E3, uzyskiwane jest analogicznie jak w powyższych podpunktach, przy czym dla pozycji jako cel nie podaje się współrzędnych markerów, zamiast nich podawane są pozycje obiektów E0 i E1. Dla obiektu E3 dodatkowo wyznaczana jest również jego rotacja, przy wykorzystaniu kontenera Locked Track. Kontener ten umożliwia skierowanie wybranej osi obiektu E3 na inny obiekt, powodując przy tym blokadę jednej z pozostałych osi. W rozważanym przypadku oś przeciwna do osi Z obiektu E3, kierowana jest na obiekt E2 w celu blokady osi Y. Konfigurację dla kontenerów E3 pokazano na poniższym rysunku.

Określanie pozycji obiektu E4, zawierającego kontener Child Of. Przy pomocy tego kontenera tworzona jest relacja rodzic-dziecko. Obiekt E4, wykorzystując kontener

Child Of, dziedziczy położenie oraz rotację po obiekcie E3 z odpowiednio

ustawionym przesunięciem Offset.

Rysunek 40: Konfiguracja kontenerów obiektu E0.

Ostatnim krokiem jest określenie pozycji i rotacji dla kości IK_podstawa. Wartości tych parametrów uzyskuje się, dodając do tej kości kontener Child Of i ustawiając parametr rodzica (Parent) na obiekt E4.

Proces wyznaczania pozycji i rotacji kości IK_podstawa pokazano na poniższym rysunku.

Wyznaczanie rotacji i pozycji dla kości kręgosłupa: IK_kregoslup i IK_kregoslup2, szyi:

IK_szyja, głowy: IK_glowa oraz nadgarstków: IK_nadgarstek_R, IK_nadgarstek_L106

odbywa się analogicznie.

B) Wyznaczanie kości obojczyka awatara (IK_obojczyk)

Wyznaczanie pozycji i rotacji dla kości obojczyków: IK_obojczyk_R,

IK_obojczyk_L, ramion: IK_ramie_R, IK_ramie_L, łokci: IK_lokiec_R, IK_lokiec_L

cechuje się pewnymi różnicami. Dla tych kości zastosowano dodatkowo kość pomocniczą, która obniża lub podwyższa odpowiednio kości główne, sprawiając iż znajdują się one podczas animacji we właściwych anatomicznie miejscach. Zabieg ten ma znaczny wpływ na poprawę wyglądu i naturalności animacji. Z uwagi na to, że wyznaczanie przebiega analogicznie w celu zobrazowania tego procesu wybrano jeden przypadek dla kości prawego obojczyka IK_obojczyk_R. Kość ta określana jest przez markery M9 i M10. Określenie pozycji i rotacji tej kości obejmuje kilka etapów:

Utworzenie pomocniczego obiektu E21 zawierającego kontenery ustawiające go pomiędzy markerami M9 i M10.

106 Końcówki oznaczeń „R” i „L” oznaczają odpowiednio prawą i lewą stronę układu szkieletowego. Rysunek 42: Wyznaczanie pozycji i rotacji dla kości IK_podstawa.

Wstawienie kości pomocniczej IK_obojczyk_R_kosc_pomocnicza do układu szkieletowego (rodzicem dla niej jest kość IK_kregoslup2). Kość ta zawiera kontener IK Solver, zatem będzie ona sterowana przy użyciu odwrotnej kinematyki. Poniższy rysunek przedstawia ustawienia kontenera dla obiektu E21.

Kość IK_obojczyk_R_kosc_pomocnicza jest rodzicem kości IK_obojczyk_R. Niezastosowanie kości pomocniczej dla kości skutkowałoby tym, że kość

IK_obojczyk_R znajdowałaby się powyżej miejsca, w którym anatomicznie

występuje bark, przez co rotacja barku przebiegałaby w sposób nienaturalny. Proces wyznaczania pozycji i rotacji kości IK_obojczyk_R pokazano na rysunku poniżej.

Na rys. 45 pokazano proces rejestracji gestu „bałagan” w studio motion capture oraz kolejne etapy powstawania animacji gestu w technologii 3D.

Rysunek 44: Określanie rotacji dla kości IK_obojczyk_R.

Rysunek 45: Proces rejestracji gestu „bałagan” oraz kolejne etapy powstawania jego trójwymiarowej animacji.

W dokumencie Index of /rozprawy2/10860 (Stron 114-120)