2022-12-04 15:08:58 +01:00
# Vertex Animation
## This works with Entities 1.0
This is a a animation system for skinned meshes in ECS, it includes a baking tool and the shaders to render the data.
It is based on this framework https://github.com/maxartz15/VertexAnimation
I forked this framework and fixed it for Entities 1.0
Here you can find a video of it in action:
https://youtu.be/yOddkGkct8w
Original Readme:
2020-11-02 23:50:28 +01:00
# TECH ART OUTSOURCE - Vertex Animation
2020-11-02 20:23:53 +01:00
2021-02-19 02:40:06 +01:00
![](Documentation~/Images/ProjectCastle_01.gif)
2021-02-19 02:21:25 +01:00
A vertex animation baking tool, shaders, and animation system for Unity DOTS/ECS.
Render tens of thousands of models at the same time each with its own animation state.
## Features
- Vertex animation model baker
- Multiple animations (stored in one Texture2DArray)
- LOD generation
- Prefab generation
- Animation book generation
- DOTS animation system
- Simple API
- Animation library and books
- Shaders
- Lit vertex animation shader
- Interpolation
- Normal encoding and decoding
- Shader graph support
### Model Baker
Artist friendly GUI for converting models.
2021-02-19 02:40:06 +01:00
![](Documentation~/Images/VA_ModelBaker_01.png)
2021-02-19 02:21:25 +01:00
### DOTS Animation System
Sample code to play an animation.
```C#
protected override void OnUpdate()
{
float deltaTime = UnityEngine.Time.deltaTime;
Entities.ForEach((Entity entity, ref VA_AnimatorComponent ac) =>
{
// Get the animation lib data.
ref VA_AnimationLibraryData animationsRef = ref ac.animationLibrary.Value;
// Set the animation index on the AnimatorComponent to play this animation.
ac.animationIndex = VA_AnimationLibraryUtils.GetAnimation(ref animationsRef, animationName);
// 'Play' the actual animation.
ac.animationTime += deltaTime * animationsRef.animations[ac.animationIndex].frameTime;
}).ScheduleParallel();
}
```
### Shaders
Lit example shader (build in shader graph).
Full shader graph support.
2021-02-19 02:40:06 +01:00
![](Documentation~/Images/VA_Shaders_01.png)
2020-11-02 20:23:53 +01:00
## Install
[Installing from a Git URL ](https://docs.unity3d.com/Manual/upm-ui-giturl.html )
2021-02-19 02:21:25 +01:00
[Documentation ](Documentation~/VertexAnimation.md )
2021-04-05 22:36:43 +02:00
## Getting Started
2021-04-16 16:13:33 +02:00
- Example 1: Mainly used for testing.
- Example 2: Contains an animation system that shows how you could setup animated characters and a spawning system to test performance.
- Example 3: MonoBehaviour example for if you are not using DOTS.
2021-04-05 22:36:43 +02:00
2021-06-24 20:59:38 +02:00
## Extra Info
This project is developed by the TAO (Tech Art Outsource) group at BUAS (Breda University of Applied Sciences).
![](Documentation~/Images/BUASLogo.png)
There are plenty of improvements to be made, e.g.:
- (Optional) per bone vertex animation (instead of per-vertex), this can reduce the texture size needed to store the animations.
- Add option to export rotation map separately instead of compressing into the alpha channel, this will make it slower but higher quality.
- The LOD generation is very basic and slow, the ability to swap out algorithms would be cool.
2021-06-24 21:04:16 +02:00
- Split different modules into separate packages (LOD generation, animation baker + shaders, and the animation system)?
- Multi-material and/or sub-meshes support.
2021-06-24 20:59:38 +02:00
2021-02-19 02:21:25 +01:00
## Used By
2021-06-24 20:59:38 +02:00
- [Vedelem: The Golden Horde ](https://store.steampowered.com/app/1517150/Vedelem_The_Golden_Horde/ )
- Your project?
2020-11-02 20:23:53 +01:00
## LICENSE
2021-06-24 21:04:16 +02:00
Overall package is licensed under [MIT ](/LICENSE.md ), unless otherwise noted in the [3rd party licenses ](/THIRD%20PARTY%20NOTICES.md ) file and/or source code.