Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxartz15/VertexAnimation
Vertex animation baking tool, shaders and animation system for Unity DOTS/ECS.
https://github.com/maxartz15/VertexAnimation
animation dots ecs gpu-instancing hdrp hybrid-renderer lod shaders unity urp vat vertex-animation
Last synced: about 14 hours ago
JSON representation
Vertex animation baking tool, shaders and animation system for Unity DOTS/ECS.
- Host: GitHub
- URL: https://github.com/maxartz15/VertexAnimation
- Owner: maxartz15
- License: mit
- Created: 2020-11-02T19:23:50.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-12-11T03:19:52.000Z (almost 2 years ago)
- Last Synced: 2024-11-09T18:03:04.508Z (3 days ago)
- Topics: animation, dots, ecs, gpu-instancing, hdrp, hybrid-renderer, lod, shaders, unity, urp, vat, vertex-animation
- Language: C#
- Homepage:
- Size: 90.9 MB
- Stars: 440
- Watchers: 20
- Forks: 83
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-unity3d - VertexAnimation - Vertex animation baking tool, shaders and animation system for Unity DOTS/ECS. (Open Source Repositories / DOTS)
README
# 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.