owned this note
owned this note
Published
Linked with GitHub
---
title: Anata Overview
description:
image:
robots: index, follow
lang: en
dir: ltr
breaks: true
type: slide
slideOptions:
theme: sky
overview: true
---
# <span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">Anata VRMs</span>
###### tags: `anata`
<!-- .slide: data-background="https://i.imgur.com/VKPyt0w.png" -->
<span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">presentation by jin</span>
---
Where we at?
1. Sort Metadata ✅
2. 3D modeling: `95%`
3. QA / Optimization: `Ready`
4. Assembly into VRM `Ready`
5. More QA / Polish 🔜
6. Final delivery 🕺
---
## <span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">Metadata</span>
<!-- .slide: data-background="https://hackmd.io/_uploads/rJGPdNVLn.jpg" -->
---
3000+ Unique Traits
<!-- .slide: data-background="https://hackmd.io/_uploads/SkiJopXUh.png" -->
---
#### Female Anata
<img class="r-stretch" src="https://hackmd.io/_uploads/rkwEZ_gL3.png">
1000 Female Anata, 1761 total unique traits
----
<!-- .slide: data-background="https://hackmd.io/_uploads/H1xbtEEU2.png" -->
---
#### Male Anata
<img class="r-stretch" src="https://hackmd.io/_uploads/r1qSZOg82.png">
1000 Files, 1600 total unique traits
----
<!-- .slide: data-background="https://hackmd.io/_uploads/BkjGNS4In.png" -->
---
### Number of traits per Anata
| Stats | Minimum | Maximum | Average |
| :----: | :------: | :-----: | :-----: |
| Female | 5 | 14 | 8 |
| Male | 4 | 14 | 7 |
---
# <span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">3D Modeling</span>
<!-- .slide: data-background="https://i.imgur.com/pviptEI.png" -->
---
Brace
| [FEMALE ](https://github.com/M3-org/anata/blob/main/files/female/BRACE/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/BRACE/README.md) | [MALE ](https://github.com/M3-org/anata/blob/main/files/male/BRACE/README.md)|
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_BRACE.jpg) | [](https://anata.dev/img/shared/comb/comb_BRACE.jpg) | [](https://anata.dev/img/male/comb/comb_BRACE.jpg) |
----
Clips and Kanzashi
| [FEMALE](https://github.com/M3-org/anata/blob/main/files/female/CLIPS_AND_KANZASHI/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/CLIPS_AND_KANZASHI/README.md) | [MALE](https://github.com/M3-org/anata/blob/main/files/male/CLIPS_AND_KANZASHI/README.md)|
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_CLIPS_AND_KANZASHI.jpg) | [](https://anata.dev/img/shared/comb/comb_CLIPS_AND_KANZASHI.jpg) | [](https://anata.dev/img/male/comb/comb_CLIPS_AND_KANZASHI.jpg) |
----
Clothing
| [FEMALE](https://github.com/M3-org/anata/blob/main/files/female/CLOTHING/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/CLOTHING/README.md) | [MALE](https://github.com/M3-org/anata/blob/main/files/male/CLOTHING/README.md) |
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_CLOTHING.jpg) | [](https://anata.dev/img/shared/comb/comb_CLOTHING.jpg) | [](https://anata.dev/img/male/comb/comb_CLOTHING.jpg) |
----
Earring
| [FEMALE](https://github.com/M3-org/anata/blob/main/files/female/EARRING/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/EARRING/README.md) | [MALE](https://github.com/M3-org/anata/blob/main/files/male/EARRING/README.md) |
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_EARRING.jpg) | [](https://anata.dev/img/shared/comb/comb_EARRING.jpg) | [](https://anata.dev/img/male/comb/comb_EARRING.jpg) |
----
Eyes
| [FEMALE](https://github.com/M3-org/anata/blob/main/files/female/EYES/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/EYES/README.md) | [MALE](https://github.com/M3-org/anata/blob/main/files/male/EYES/README.md) |
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_EYES.jpg) | [](https://anata.dev/img/shared/comb/comb_EYES.jpg) | [](https://anata.dev/img/male/comb/comb_EYES.jpg) |
----
Face Other
| [FEMALE](https://github.com/M3-org/anata/blob/main/files/female/FACE_OTHER/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/FACE_OTHER/README.md) | [MALE](https://github.com/M3-org/anata/blob/main/files/male/FACE_OTHER/README.md) |
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_FACE_OTHER.jpg) | [](https://anata.dev/img/shared/comb/comb_FACE_OTHER.jpg) | [](https://anata.dev/img/male/comb/comb_FACE_OTHER.jpg) |
----
Glasses
| [FEMALE](https://github.com/M3-org/anata/blob/main/files/female/GLASSES/README.md) | [SHARED](https://github.com/M3-org/anata/blob/main/files/shared/GLASSES/README.md) | [MALE](https://github.com/M3-org/anata/blob/main/files/male/GLASSES/README.md) |
| -------- | -------- | -------- |
| [](https://anata.dev/img/female/comb/comb_GLASSES.jpg) | [](https://anata.dev/img/shared/comb/comb_GLASSES.jpg) | [](https://anata.dev/img/male/comb/comb_GLASSES.jpg) |
----
tldr...
---
**Data wrangling all the final assets**
Requirements:
- 1-2 materials, 5-10k triangles max each
- Principled bsdf materials
- Parented to armatures in the blend file
- Properly weighted (vertex weights)
- Properly named in hierarchy (based on folder)
- 1 blend per category (multiple for clothing)
----

----

----

---
Anata Traits All
<iframe width="100%" height="500" src="https://hackmd.io/@xr/anata-traits" frameborder="0"></iframe>
----
Anata Traits Female
<iframe width="100%" height="500" src="https://hackmd.io/@XR/female_anata" frameborder="0"></iframe>
----
Anata Traits Shared
<iframe width="100%" height="500" src="https://hackmd.io/@XR/shared_anata" frameborder="0"></iframe>
----
Anata Traits Male
<iframe width="100%" height="500" src="https://hackmd.io/@XR/male_anata" frameborder="0"></iframe>
---
[Avatar Guidelines](https://docs.hyperfy.io/avatars#rank-system)

We can have multiple levels of detail, High -> Low
----

----
Current versions are heavy

----
Manual work

great results but doesn't scale well
---
### Male Stats
per individual traits
**5/27/23**
<small>
| Summary | Sum | Average | Maximum |
| ---------- | ----------:| -----------:| ---------:|
| File Size | 2.1 GB | 3.2 MB | 37.8 MB |
| Images | 992 | 1.5 | 13.00 |
| Draw calls | 985 | 1.5 | 6.00 |
| Triangles | 4,417,217 | 6723 | 182,168 |
**6/25/23**
| Summary | Sum | Average | Maximum |
| ---------- | ---------:| -------:| -------:|
| Size (KB) | 3.8 GB | 3.8 MB | 38 MB |
| Images | 2093 | 2.1 | 13 |
| Draw calls | 2102 | 2.1 | 8 |
| Triangles | 7,465,674 | 7,649 | 182,168 |
</small>
----
Male Stats
<iframe width="100%" height="500" src="https://anata.dev/metadata/stats/male.html" frameborder="0"></iframe>
---
### Shared Stats (5/27/23)
| Summary | Sum | Average | Maximum |
| ---------- | ---------:| -----------:| --------:|
| Size (KB) | 160.63 MB | 1.15 MB | 7 MB |
| Images | 146 | 1 | 3 |
| Draw calls | 159 | 1 | 3 |
| Triangles | 997,454 | 7,124 | 88,884 |
----
Shared Stats
<iframe width="100%" height="500" src="https://anata.dev/metadata/stats/shared.html" frameborder="0"></iframe>
---
### Female Stats (5/27/23)
| Summary | Sum | Average | Maximum |
| :--------: | :----------:| :------------:| :--------:|
| Size | 1.24 GB | 1.83 MB | 82.72 MB |
| Images | 797 | ~1.18 | 4 |
| Draw calls | 1,251 | ~1.85 | 17 |
| Triangles | 11,571,477 | 17,168 | 264,156 |
----
Female Stats
<iframe width="100%" height="500" src="https://anata.dev/metadata/stats/female.html" frameborder="0"></iframe>
---

---
### Female Body
2 draw calls
1 animations
1 materials
9089 vertices
15030 triangles
8 MB
----
Female BRACE
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 115 |
| Total assets: | 252 |
| Percent: | 25% |
| Min Size (KB): | 174.0 |
| Max Size (KB): | 4825.2 |
| Avg Size (KB): | 1334.1 |
| Min Images: | 1.0 |
| Max Images: | 4.0 |
| Avg Images: | 1.5 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 6.0 |
| Avg Draw Calls: | 1.9 |
</span>
----
Female CLOTHING
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 297 |
| Total assets: | 1000 |
| Percent: | 100% |
| Min Size (KB): | 643.4 |
| Max Size (KB): | 82723.0 |
| Avg Size (KB): | 2437.1 |
| Min Images: | 1.0 |
| Max Images: | 3.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 17.0 |
| Avg Draw Calls: | 1.8 |
</span>
----
Female EYES
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 13 |
| Total assets: | 17 |
| Percent: | 2% |
| Min Size (KB): | 7754.3 |
| Max Size (KB): | 8783.8 |
| Avg Size (KB): | 8227.8 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.3 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 1.6 |
</span>
----
Female GLASSES
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 59 |
| Total assets: | 399 |
| Percent: | 40% |
| Min Size (KB): | 79.2 |
| Max Size (KB): | 1843.3 |
| Avg Size (KB): | 705.0 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 1.8 |
</span>
----
Female HAIR
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 296 |
| Total assets: | 1000 |
| Percent: | 100% |
| Min Size (KB): | 990.6 |
| Max Size (KB): | 4225.5 |
| Avg Size (KB): | 2299.7 |
| Min Images: | 1.0 |
| Max Images: | 1.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.7 |
</span>
----
Female HALOS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 18 |
| Total assets: | 68 |
| Percent: | 7% |
| Min Size (KB): | 408.9 |
| Max Size (KB): | 2910.8 |
| Avg Size (KB): | 1007.9 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.8 |
</span>
----
Female HATS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 11 |
| Total assets: | 21 |
| Percent: | 2% |
| Min Size (KB): | 131.3 |
| Max Size (KB): | 1675.1 |
| Avg Size (KB): | 1111.3 |
| Min Images: | 1.0 |
| Max Images: | 1.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 1.0 |
| Avg Draw Calls: | 1.0 |
</span>
----
Female HEAD
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 87 |
| Total assets: | 360 |
| Percent: | 36% |
| Min Size (KB): | 205.2 |
| Max Size (KB): | 7723.8 |
| Avg Size (KB): | 1375.8 |
| Min Images: | 1.0 |
| Max Images: | 3.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 2.0 |
</span>
----
Female MASKS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 14 |
| Total assets: | 60 |
| Percent: | 6% |
| Min Size (KB): | 185.2 |
| Max Size (KB): | 5767.7 |
| Avg Size (KB): | 1097.9 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.1 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.1 |
</span>
----
Female NECK
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 68 |
| Total assets: | 304 |
| Percent: | 30% |
| Min Size (KB): | 183.5 |
| Max Size (KB): | 1278.9 |
| Avg Size (KB): | 714.1 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.1 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 2.0 |
</span>
----
Female SIGIL
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 121 |
| Total assets: | 358 |
| Percent: | 36% |
| Min Size (KB): | 131.3 |
| Max Size (KB): | 7438.0 |
| Avg Size (KB): | 1244.9 |
| Min Images: | 1.0 |
| Max Images: | 4.0 |
| Avg Images: | 1.6 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 6.0 |
| Avg Draw Calls: | 1.6 |
</span>
----
Female TAIL
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 19 |
| Total assets: | 152 |
| Percent: | 15% |
| Min Size (KB): | 451.2 |
| Max Size (KB): | 2671.1 |
| Avg Size (KB): | 1750.6 |
| Min Images: | 1.0 |
| Max Images: | 1.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 1.0 |
| Avg Draw Calls: | 1.0 |
</span>
----
Female WEAPON
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 80 |
| Total assets: | 560 |
| Percent: | 56% |
| Min Size (KB): | 191.5 |
| Max Size (KB): | 3758.7 |
| Avg Size (KB): | 1356.1 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.4 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 8.0 |
| Avg Draw Calls: | 2.6 |
</span>
----
Female WINGS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 45 |
| Total assets: | 151 |
| Percent: | 15% |
| Min Size (KB): | 334.9 |
| Max Size (KB): | 7528.4 |
| Avg Size (KB): | 3054.3 |
| Min Images: | 1.0 |
| Max Images: | 1.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 2.0 |
| Max Draw Calls: | 4.0 |
| Avg Draw Calls: | 2.4 |
</span>
---
### Male Body
1 draw calls
0 Animations
1 materials
7030 vertices
11038 triangles
3.6 MB
----
Male BRACE
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 114 |
| Total assets: | 374 |
| Percent: | 37% |
| Min Size (KB): | 84.1 |
| Max Size (KB): | 7986.6 |
| Avg Size (KB): | 1754.6 |
| Min Images: | 1.0 |
| Max Images: | 4.0 |
| Avg Images: | 1.5 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 4.0 |
| Avg Draw Calls: | 1.4 |
</span>
----
Male CLOTHING
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 303 |
| Total assets: | 1000 |
| Percent: | 100% |
| Min Size (KB): | 201.6 |
| Max Size (KB): | 37896.5 |
| Avg Size (KB): | 8177.7 |
| Min Images: | 1.0 |
| Max Images: | 13.0 |
| Avg Images: | 3.7 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 8.0 |
| Avg Draw Calls: | 3.7 |
</span>
----
Male EARRING
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 61 |
| Total assets: | 197 |
| Percent: | 20% |
| Min Size (KB): | 17.8 |
| Max Size (KB): | 3119.3 |
| Avg Size (KB): | 293.9 |
| Min Images: | 1.0 |
| Max Images: | 3.0 |
| Avg Images: | 1.6 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 1.3 |
</span>
----
Male GLASSES
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 64 |
| Total assets: | 219 |
| Percent: | 22% |
| Min Size (KB): | 31.7 |
| Max Size (KB): | 1666.0 |
| Avg Size (KB): | 558.6 |
| Min Images: | 0.0 |
| Max Images: | 3.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 1.2 |
</span>
----
Male HAIR
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 121 |
| Total assets: | 1000 |
| Percent: | 100% |
| Min Size (KB): | 837.9 |
| Max Size (KB): | 4126.7 |
| Avg Size (KB): | 2237.3 |
| Min Images: | 3.0 |
| Max Images: | 7.0 |
| Avg Images: | 4.1 |
| Min Draw Calls: | 3.0 |
| Max Draw Calls: | 7.0 |
| Avg Draw Calls: | 4.3 |
</span>
----
Male HALOS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 28 |
| Total assets: | 129 |
| Percent: | 13% |
| Min Size (KB): | 29.6 |
| Max Size (KB): | 1221.4 |
| Avg Size (KB): | 330.8 |
| Min Images: | 0.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.3 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.4 |
</span>
----
Male HATS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 11 |
| Total assets: | 17 |
| Percent: | 2% |
| Min Size (KB): | 136.8 |
| Max Size (KB): | 962.1 |
| Avg Size (KB): | 368.5 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.1 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.1 |
</span>
----
Male HEAD
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 89 |
| Total assets: | 449 |
| Percent: | 45% |
| Min Size (KB): | 6.6 |
| Max Size (KB): | 2406.8 |
| Avg Size (KB): | 397.7 |
| Min Images: | 0.0 |
| Max Images: | 3.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.3 |
</span>
----
Male MASKS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 15 |
| Total assets: | 47 |
| Percent: | 5% |
| Min Size (KB): | 4.5 |
| Max Size (KB): | 2295.3 |
| Avg Size (KB): | 626.7 |
| Min Images: | 0.0 |
| Max Images: | 1.0 |
| Avg Images: | 0.9 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 1.0 |
| Avg Draw Calls: | 1.0 |
</span>
----
Male NECK
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 61 |
| Total assets: | 208 |
| Percent: | 21% |
| Min Size (KB): | 9.8 |
| Max Size (KB): | 5159.8 |
| Avg Size (KB): | 1244.4 |
| Min Images: | 1.0 |
| Max Images: | 4.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.1 |
</span>
----
Male SIGIL
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 95 |
| Total assets: | 435 |
| Percent: | 44% |
| Min Size (KB): | 45.6 |
| Max Size (KB): | 9024.3 |
| Avg Size (KB): | 3795.4 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 3.0 |
| Avg Draw Calls: | 1.2 |
</span>
----
Male TAIL
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 19 |
| Total assets: | 82 |
| Percent: | 8% |
| Min Size (KB): | 98.3 |
| Max Size (KB): | 1584.9 |
| Avg Size (KB): | 637.4 |
| Min Images: | 1.0 |
| Max Images: | 1.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 1.0 |
| Avg Draw Calls: | 1.0 |
</span>
----
Male TATTOO
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 108 |
| Total assets: | 233 |
| Percent: | 23% |
| Min Size (KB): | 3104.5 |
| Max Size (KB): | 4988.6 |
| Avg Size (KB): | 3217.9 |
| Min Images: | 1.0 |
| Max Images: | 1.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 1.0 |
| Avg Draw Calls: | 1.0 |
</span>
----
Male WEAPON
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 100 |
| Total assets: | 516 |
| Percent: | 52% |
| Min Size (KB): | 314.8 |
| Max Size (KB): | 11012.7 |
| Avg Size (KB): | 2483.1 |
| Min Images: | 1.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.2 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.2 |
</span>
----
Male WINGS
<span style='font-size: 24px;'>
| | Value |
|:---|---:|
| Unique assets: | 47 |
| Total assets: | 126 |
| Percent: | 13% |
| Min Size (KB): | 287.9 |
| Max Size (KB): | 9573.4 |
| Avg Size (KB): | 3050.3 |
| Min Images: | 0.0 |
| Max Images: | 2.0 |
| Avg Images: | 1.0 |
| Min Draw Calls: | 1.0 |
| Max Draw Calls: | 2.0 |
| Avg Draw Calls: | 1.0 |
</span>
---
## Material Optimization
**1. First have all the final assets exported**
2. Resize non-po2 images to power of 2
3. Optimize textures (pngquant, jpegoptim)
4. Rebundle into glTF binary files
---
#### Setup Environment
1. Get stats for glbs per directory (male example)
`./scripts/get_stats.sh files/male KB`
Outputs a CSV with "Category,Name,Size (KB),Images,Draw calls,Triangles,File Path"
----
2. Filter + Generate: HTML / TXT / JSON / CSV
`python3 scripts/visualize_stats.py metadata/stats/male.csv -o all`
> These will be useful for us later on, especially the JSON file which we use to load into our modelviewer HTML app during mesh optimization phase
Outputs files to metadata/stats folder
----
3. Copy male files + folders to "files/optimize/"
`bash scripts/optimize/to_optimize2.sh metadata/stats/male_viz.csv`
> We essentially create a duplicate environment where it's safe to break things during the QA process. Uses the CSV made from before to grab file paths
----
4. Create detailed stats about each category
`python3 category_stats.py male_viz.json male_trait_stats.csv`

> We copy paste the output into the slide presentation you're viewing here!
---
#### Convert glbs to glTF, separate textures
> `find ./files -iname "*.glb" -exec sh -c 'gltf-pipeline -i "$1" -s -o "$(dirname "$1")/$(basename "$1" .glb).gltf"' _ {} \;`
---
#### Generate CSVs about Texture Info
jpg
> `{ echo "path,resolution,kilobytes,bytes"; find ./files -type f -iname "*.jpg" -exec sh -c 'identify -format "\"%d/%f\",\"%wx%h\",\"%b\"\n" "$0" | awk -F, "{gsub(/[^0-9]/, \"\", \$3); printf \"%s,%s,%.2f,%.0f\\n\", \$1, \$2, \$3/1024, \$3}"' {} \;; } > male_jpg.csv`
png
> `{ echo "path,resolution,kilobytes,bytes"; find ./files -type f -iname "*.png" -exec sh -c 'identify -format "\"%d/%f\",\"%wx%h\",\"%b\"\n" "$0" | awk -F, "{gsub(/[^0-9]/, \"\", \$3); printf \"%s,%s,%.2f,%.0f\\n\", \$1, \$2, \$3/1024, \$3}"' {} \;; } > male_png.csv`
----
We will generate multiple CSVs like this one
```csvpreview
path,resolution,kilobytes,bytes
"./files/male/TAIL/Siyokoy/tail_siyokoy.png","1024x1024",122.25,125187
"./files/male/TAIL/Gray_Cat_Tail_Dual/Gray_Cat_Tail_Gray_Cat_Tail_BaseColor.1001.png","1024x1024",115.86,118642
"./files/male/TAIL/Pink_Cat_Tail/tail_4_tail_4_BaseColor.1001.png","1024x1024",85.07,87115
"./files/male/TAIL/Green_Tiger_Tail/green_Tiger_Tail.png","2048x2048",156.25,160004
"./files/male/TAIL/Mermaid_Tail/blue_tail_2.png","1024x1024",688.86,705390
"./files/male/TAIL/Chakra_Kitsune/tail_10_tail_10_BaseColor.1001.png","1024x1024",98.93,101306
"./files/male/TAIL/Gray_Cat_Tail/Gray_Cat_Tail.png","1024x1024",156.11,159860
```
Each time we do something, we make a new CSV
---
2. Resize NPOT (Non Power of Two) Textures

Best practices to guarantee better performance
---
In green are power of two resolution textures

Everything else needs to be resized, for this we use `resize_textures.py`
---
After `resize_textures.py` :smiley:

---
#### PNG Compression example
[Original: 1.2 MB](https://hackmd.io/_uploads/HJJTSOGL2.png)

- `imagecompressor` (web): 370 KB
- `optipng`: 580 KB
- `imagemagick`: 663 KB
- `pngquant`: 372 KB
---
First Pass: PNG Compression for Male Assets
<small>
| | Sum (KB) | Average (KB) | Median (KB) | Minimum (KB) | Maximum (KB) |
|------------------|--------------|--------------|-------------|--------------|--------------|
| Before | 577028.02 | 379.37 | 236.46 | 0.29 | 7827.18 |
| After (default) | 492233.93 | 323.63 | 195.23 | 0.12 | 4614.26 |
| After (80%) | 448954.15 | 295.17 | 195.18 | 0.12 | 2045.04 |
</small>
15% improvement by default highest quality
23% improvement with 80% quality
~1525 files
----
### JPG Compression
PNG converted to jpg: 212 KB
- 80% quality (`imagemagick`): 141 KB
- 80% quality (`jpegoptim`): 114 KB
---
<span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">For textures that look like this, we can use JPG</span>
<!-- .slide: data-background="https://hackmd.io/_uploads/Hk_AqpRBh.jpg" -->

<span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">10x filesize reduction :thumbsup:</span>
---
First Pass: JPG Compression Male Assets
<small>
| | Sum (KB) | Average (KB) | Median (KB) | Minimum (KB) | Maximum (KB) |
|--------------------|------------|--------------|-------------|--------------|--------------|
| Before | 239204.35 | 429.45 | 403.01 | 11.19 | 1802.60 |
| After (80%) | 114924.40 | 206.33 | 189.64 | 19.20 | 910.69 |
</small>
~50% file size reduction
---
**First Pass Resize + Compression Overview**
- 2.8G images.tar (original)
- 2.2G images_resized.tar (power of two)
- 1.4G images_compressed_1.tar (png only)
- 1022M images_compressed_2.tar (png 80%)
- 801M images_compressed_jpg-png_80.tar (all)
*Not bad, still plenty of room for improvement!*
---
Todo: [Texture Filename Sanitization](https://github.com/M3-org/anata/issues/77)

---
## Filesize Estimations
<small>
Since 99% of the assets are modeled, we can make rough estimates about how every individual Anata stats might look when assembled together
</small>
----
<!-- .slide: data-background-iframe="https://hackmd.io/@XR/anata-vrm-projections" -->
---
### Female VRM Estimates
<small>
Data taken from June 2023
| | Size (KB) | Draw Calls | Images | Triangles |
|----------|---------------:|:----------:|:------:|--------:|
| Minimum | 6,472 | 1 | 1 | 2,900 |
| Maximum | 51,319 | 22 | 12 | 380,283 |
| Sum | 14,245,453 | 5977 | 4802 | 56,560,831 |
| Average | 14,245 | 5.98 | 4.80 | 56,560 |
> Filesize is good so far, draw calls are heavy probably due to images, triangles are looking pretty heavy
</small>
---
### Male VRM Estimates
<small>
Data taken from June 2023
| | Size (KB) | Draw Calls | Images | Triangles |
|----------|-------------:|:----------:|:------:|------------:|
| Minimum | 3,525 | 1 | 0 | 804 |
| Maximum | 45,812 | 17 | 19 | 205288 |
| Sum | 16,579,220 | 7450 | 7055 | 27,566,221 |
| Average | 16,579 | 7.45 | 7.05 | 27,566 |
> Filesize is almost good, draw calls are heavy, probably due to images (need to bake together), and triangles are good so far.
</small>
---
## Mesh Optimization
Tools used:
- https://github.com/playkostudios/model-splitter
- https://github.com/takahirox/glTF-Transform-lod-script
- https://simplygon.com/
- https://blender.org/
---
### Workflow
Setup
Get File size, Draw Calls, Triangles, Preview / Filter, Copy folder structure to files/optimize for processing
```mermaid
flowchart LR
GetStats(get_stats.sh)
Preview(visualize_stats.py)
Move(to_optimize.sh)
Step2(Step 2: Optimization QA / Model Viewer)
GetStats --> Preview
Preview --> Move
Move --> Step2
```
---
Step 2: Made visual tool to help QA process

Still gathering assets before commencing step
---
## <span style="background-color: rgba(0, 0, 0, 0.8); text-shadow: 2px 2px 4px rgba(255,255,255,0.5); color: white;">Assembling VRMs</span>
<!-- .slide: data-background="https://hackmd.io/_uploads/HyLmGJyD3.png" -->
---
Anata Boom Tools Vlog Update: June 3rd
{%youtube 30dsk97126s %}
https://www.youtube.com/watch?v=30dsk97126s
---
### Anata Boom-Tools Milestones

----
1. Clothing

----
2. Importing Assets

----
3. Weight Transfering

----
4. Spring Bones Additions
Modify the existing code to add spring bones to unique instances of hair, testing thoroughly while adding other spring bones as needed
---