# Počítačový model interpretující znakovou řeč
Počítačový model (avatar) modelovaný a animovaný v aplikaci [Blender](https://www.blender.org/), renderovaný herním enginem [Panda3D](https://www.panda3d.org/). Subprojekt projektu [Interpretace znakové řeči](../README.md).

Adresářová struktura projektu je složená ze skriptů, knihoven a dat. Spustitelné skripty jsou umístěny v adresářovém kořenu, knihovny a data jsou umístěny v samostatných adresářích `./modules/` a `./data/`.

<p align="center">
  <img src="./data/readme/model.png" width=300/>
</p>

Spuštění nezávislé aplikace renderující model a testování animací pomocí
```
$ python ./avatar/standalone.py
```
Aplikace očekává prezenci modelu v `.gltf` formátu, který má v sobě zabudované animace.
<p align="center">
  <img src="./data/readme/animation_names.png"/>
</p>

## Export modelu a animací do `.gltf` formátu
Animace jsou pojmenovávány podle svého textového významu a kódu jazyka ve tvaru `<název>-<jazykový kód>`, např. animace knihy v českém znakovém jazyce je pojmenovaná jako `book-cs_cz`. 

Pro export modelu a animací z Blenderu je potřeba mít animace uložené mezi Non-Linear Animations.
<p align="center">
  <img src="./data/readme/nla.png"/>
</p>

Následně je projekt exportován
<p align="center">
  <img src="./data/readme/export_1.png"/>
</p>

V nastavení exportu je potřeba zvolit `.gltf` formát, pojmenovat model `avatar.gltf`, **odškrtnout** možnost `Optimize Animation Size` a uložit soubor do složky `./avatar/data/`.
<p align="center">
  <img src="./data/readme/export_2.png"/>
</p>

## Vlastní knihovny
Stručný popis vlastně vytvořených knihoven, podrobnější popis funkcionality je uveden přímo ve zdrojových souborech. Všechny knihovny jsou umístěny v adresáři `./modules/`.

- `config.py` - Konfigurační soubor obsahující primárně informace o adresářové struktuře a umístění jednotlivých souborů.
- `renderer.py` - Obsahuje definici aplikace renderující model a animace
- `sign_tracker.py` - Obsahuje definici jednoduchého trackeru znaků v čase, který zajišťuje neopakované renderování stejného znaku po sobě

## Ukázka animovaného modelu
<p align="center">
  <img src="./data/readme/avatar.gif"/>
</p>