mirror of
https://github.com/maxartz15/VertexAnimation.git
synced 2024-11-14 00:05:35 +01:00
93 lines
3.0 KiB
Markdown
93 lines
3.0 KiB
Markdown
# TECH ART OUTSOURCE - Vertex Animation
|
|
|
|
![](Documentation~/Images/ProjectCastle_01.gif)
|
|
|
|
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.
|
|
|
|
![](Documentation~/Images/VA_ModelBaker_01.png)
|
|
|
|
### 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.
|
|
|
|
![](Documentation~/Images/VA_Shaders_01.png)
|
|
|
|
## Install
|
|
|
|
[Installing from a Git URL](https://docs.unity3d.com/Manual/upm-ui-giturl.html)
|
|
|
|
[Documentation](Documentation~/VertexAnimation.md)
|
|
|
|
## Getting Started
|
|
|
|
- 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.
|
|
|
|
## 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.
|
|
- Split different modules into separate packages (LOD generation, animation baker + shaders, and the animation system)?
|
|
- Multi-material and/or sub-meshes support.
|
|
|
|
## Used By
|
|
|
|
- [Vedelem: The Golden Horde](https://store.steampowered.com/app/1517150/Vedelem_The_Golden_Horde/)
|
|
- Your project?
|
|
|
|
## LICENSE
|
|
|
|
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.
|