# Anata Behind the Scenes
**Timeline**

**Milestones**

I've put a lot of effort into preparing a presentation to provide an overview of the project. However, since you're already familiar with the key details (and also remembering how my other videos were ignored), I'm hoping we can skip that.
The Anata team, Hologram, and the Webaverse artists can all vouch for the work that has been done and the decisions that have been made along the way. To refresh your memory, I'll share some highlights here:
- https://hackmd.io/@XR/anata/
- https://app.dework.xyz/webaverse/anata-81736
- https://www.youtube.com/playlist?list=PLp5K4ceh2pR0kbbdLZGfqJQlx_0sghPFl


We communicated early on about the challenges that were ahead in terms of traits having many variations each. Since there were already *thousands of unique traits* to create and because avatar assembly relied on matching NFT metadata to 3D models the decision was made to start with making 1 3d model per unique trait based on the metadata.
This allowed the art teams to hit the ground running on a straight forward mission. Later we would address the issues in QA with custom tools to rapidly iterate and reuse assets to make each VRM more like the reference art. M3 finished months ahead of the female team and was instrumental in assisting the female team complete their QA with the tools and processes we developed.
In total Webaverse helped with 1145 out of 2775 3D assets *per metadata trait* during initial 3D modeling phase. These were mostly just base meshes that also needed much more refinement afterwards. Here's how many unique traits that we ended up with since then:
**Total Unique 3D files**
- Male: 3428
- Female: 4479
To put this into perspective, here are the number of file commits to our github repos taken during various stages from 3D modeling through QA. Each commit was a fix for one of the traits, such as 3D modeling, retexturing, adjusting the weight painting, etc:


On top of all this, we've also been developing Character Studio, testing VRMs, assisting with out of the box requests such as 1/1 Honorary VRMs, creating animations, and more. It's all groundwork towards future plans that would be in our mutual interest.
---
## Character Studio Upgrades
[toc]
Webaverse was working on Character Creator for [Degens of The Street](https://opensea.io/collection/degens-of-the-street). Development ceased around March 2023, remaining on GitHub as an MIT licensed open source project.


The original plan for Anata VRMs was to use Boom Tools for assembly is well documented. After encountering too many uphill challenges, we explored our options and decided to fork Character Creator.

The code was initially far from being usable. We had to implement many features and bug fixes in order to make it usable for QA and VRM assembly.
### Spring bones and colliders support
Originally, spring bones meant to work only on 3d models for degene, it would find the base bone of the head and us it as reference to find any additional bones starting from it as root and save those spring bones. Colliser bones would only be those from the head too.
Any amount of spring bones now get merged, and defined colldiers within manifest will be saved to final vrm export. This was important for anatas as their hair uses spring bones and cloth traits use them too for movement (skirts)
### Mixamo animation support
Implementaiton to preview mixamo animations on character was implemented to avoid complicated animation assignment. It also supports drag and drop for quick visualizations
### Support loading vrm0 and vrm1
Previously, character studio only support vrm1 loading support, and export of vrm0, work was made to support both, vrm0 and vrm1 load and apply any necessary rotation modifications to work properly
### Support editing hidden faces from culling
Automatic layer culling sometimes hides geometry that would be better to be shown. Use has the ability to click the hidden faces now to show them back again.
### Support Displaying additional information of each trait
Traits ID's from target nft displays to the right, it also displays finaly triangle count and material quantity in case use wants to optimize a model
### Support adding custom textures with drag and drop
For quick testing preview, drag and drop a texture to a current selected asset was implemented for quick testing.
### Support scale character (anatas were bigger)
Anatas size were larger than other characters, code needed to be implemented to reduce their size based on a manifest definition. For anats, models were scale by 0.7 to be in proper size.
### Support drag and drop load vrm files
Previously users needed to modify directly manifest to test, for testing purposes this was hard to achieve, drag and drop vrm file to page was implemented to achieve a faster testing process
### Mulitple VRM skinned mesh support
Initial version expected a single skinned mesh per vrm. It know support nhaving multiple skinned meshes and merges them into a final skinned mesh.
### Code refactor for scalabiltiy
Code was refactored to be scalable, a characterManager class was created so that it would no longer be React dependant.
### Support for Standard material export
Character studio supports standard material, it used to support only mtoon material.
### Morph targets with gltf technique to reduce size (sparse accessors)
Reduced file size with morph target drastically (file would go from 40 mbs to 10 mbs) by using sparse accessors instead of the full model.
### Anata load per manifest integration.
Anata traits ids were not unique, so loading a manifest per anata was required to keep coordianted with what the art team made
### Thumbnail generation
Automated Thumbnail generation with manifest and custom use interactions
### Load Assets with wallet ownership
Connecting wallet and loading assets from an owned nft collection is possible
### Loading multiple manifest with drag and drop for quick testing
### Loading multiple nft json with image and model for comparison
## Extra
### Lora data generation
Automated lora data generation with manifest definitions to quickly create this data to train ai models
### Sprites Generator
Automated Sprite generation with manifest so users can generate manifests based on the VRM file points of view and animations