• Stars
    star
    240
  • Rank 167,416 (Top 4 %)
  • Language
    C#
  • Created almost 3 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

custom keyframes for Unity's timeline 🎞 (interpolate lists of anything) with visual tools πŸ–Œ and C# to computeshader binding

colorbar

Custom Timeline Keyframes and Data Painter Tools

Custom keyframes for Unity's timeline allow for easy interpolation of any custom data type including visual tools and a modular tooling system to creatively manipulate your data for use as input of generative animation and more

2021-11-18-110410-640p.mp4

Features

  • Custom keyframes (keyframe and interpolate any collection of types)
  • Undo / Redo
  • C# to compute shader binding

See videos below

State of the project

This tool was originally developed to ease animating with code and give me some flexible and visual tools to control generative animation. It should be in a working state but still rough around the edges of e.g. UX, is not tested in production of any real project. Yet I think it can be useful and I hope to return to it one day to improve all the things that need attention (e.g. better documentation, improving the UI and UX for the modular tools, fixing of bugs, improving performance, finish implementation of C# β†’ compute binding).

That being said: please open issues if you have problems or contribute by opening a PR πŸ™

Samples

A minimal sample is in projects/Timeline-2020_3/Assets. More examples for getting started can be found in the playground repository. I'll try to cleanup and provide better samples soon

Dependencies

Getting started

image

  1. Create a timeline, add a Code Control track to it. Right click in the control track to create a Control Track Asset (same as AnimationClip but for custom data, it can be re-used multiple times in a timeline or other timelines)
  2. Create script that implements the IAnimated interface or derives from the Animated class:
public class SimpleScript : Animated
{
    // Here is a custom type that you can control via timeline
    public class Point
    {   
        // a field named position will automatically be detected by the spray tool to be painted in 3d space
        public Vector3 Position;
        // you may name fields as you like and add as many as you want. They will show up in the tool to be painted and individually manipulated
        public float Radius = .1f;
    }
    
    // annotade any field that you want to animate via timeline with the Animate attribute:
    [Animate]
    public List<Point> MyList;

    // this is just for the sake of visualizing the painted points:
    private void OnDrawGizmos()
    {
        if (MyList == null) return;
        foreach (var pt in MyList)
        {
            Gizmos.DrawSphere(pt.Position, pt.Radius);
        }
    }
}
  1. Add the script to your control track
  2. Open the Tools/Timeline Tools window
  3. Open the curve views of the Control Track and click the record button for the field in your script, then start painting data.

Videos:

Modular tooling system [tweet]:

2021-11-18-111754-yuv420p.mp4
2021-11-20-180226.mp4

Any data type: control, paint and interpolate:

2021-11-15-105628.mp4
2021-10-16-152532.mp4

Onion skin [tweet]:

2021-10-17-161607.mp4

Edit mode support:

2021-11-18-191818.mp4

Runtime support [tweet]:

2021-11-18-114430.mp4

Simulation mode [tweet]:

2021-10-15-000203.mp4

Easy to integrate (e.g. controlling keijiro's swarm)

2021-11-13-175756-640p.mp4

Works with compute + can automatically bind and dispatch C# members to ComputeShaders (tweet)

20220729-010730_Timeline-2021-URP_-_DrawLine_-_Windows._Mac._Linux.mp4

Contact βœ’οΈ

🌡 needle β€” tools for unity β€’ @NeedleTools β€’ @marcel_wiessler β€’ @hybridherbst β€’ Needle Discord

More Repositories

1

compilation-visualizer

Unity Tool showing a timeline of assembly compilation. This is especially helpful when trying to optimize compile times and dependencies between assemblies. Besides showing a graphical view of compilation, selecting an assembly shows both dependencies and dependents of that assembly.
C#
856
star
2

needle-engine-support

Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible and includes networking and XR - across platforms. Documentation at https://docs.needle.tools
JavaScript
543
star
3

shadergraph-markdown

Markdown-like syntax for ShaderGraph properties, to make better material inspectors
C#
237
star
4

missing-component-info

Serializes and renders ⚠ missing component info in Unity
C#
137
star
5

selective-profiling

Selectively deep profile single methods in Unity's Profiler πŸ”¬
C#
133
star
6

ar-simulation

AR Simulation for Unity β€’ Right in the Editor β€’ Minimally Invasive
109
star
7

hybrid-packages

Export UPM packages as .unitypackage files
C#
106
star
8

needle-console

⚑ Improved Unity Console adding better log and stacktrace readability, log filtering, log hyperlinks and more
C#
80
star
9

needle-engine-samples

Live: https://engine.needle.tools/samples 🌡 Needle Engine sample scenes - use as examples and as a reference for learning 😊
TypeScript
74
star
10

animation-utils

This package contains some utilities that help working with Unity's Timeline and Animation tools, for example drag & drop to fix ⚠ missing clip bindings
C#
71
star
11

console-hyperlinks

Adds hyperlink handling for Unity console logs and more
C#
68
star
12

usd-viewer

USD Web Viewer based on Autodesk's WASM USD bindings and a three.js Hydra render delegate
JavaScript
67
star
13

shader-variant-explorer

Shader Variant Explorer lets you peek into Unity's shader compilation process to better understand the composition of shader files.
C#
60
star
14

timeline-mixer

allows for overriding timeline animations per animator
C#
38
star
15

procedural-stochastic-texturing

C#
28
star
16

unity-deeplink

C#
27
star
17

remote-hierarchy

View Hierarchy and Inspector of scenes on connected Unity players. Uses the EditorConnection framework, so works everywhere.
C#
19
star
18

unity-editor-modes

Change Unity Editor modes πŸ–₯
C#
17
star
19

glitch-package-installer

Service helping to create installers for Unity packages
JavaScript
15
star
20

transform-changed-helper

Handles transform.hasChanged for you
C#
15
star
21

CopyPaster

Copy paste gameobjects across Unity projects
C#
12
star
22

dxc-compiler-experiments

C#
9
star
23

needle-engine-modules

TypeScript
9
star
24

editorpatching

C#
8
star
25

needle-context-menu

Override Unity project menu items (experimental, dont use in production)
C#
8
star
26

unity-analyzers-starter

Custom Analyzers Sample / Starter
C#
6
star
27

unity-type-merger

Merge multiple classes into one using SourceGenerators
C#
5
star
28

lipsync

unity lipsync integration using rhubarb and timeline
C#
4
star
29

unity-prewarm-packman

Tiny helper package to speedup PackageManager startup time
C#
3
star
30

Unity-Custom-Undo

Handle custom commands in unity undo stack
C#
3
star
31

asset-explorer

Asset explorer built with Needle Engine and SvelteKit
TypeScript
3
star
32

custom-timeline-playground

C#
3
star
33

weaving

Persistent modifying using Fody (use at own risk)
C#
2
star
34

droplets

drop things on bats like there's no tomorrow
Batchfile
1
star
35

git-hooks

Auto install hooks when opening a repo
Shell
1
star
36

gpu-animation-testassets

C#
1
star
37

needle-tools.github.io

Public Website
HTML
1
star
38

gpu-animation

skinned animation on the gpu
C#
1
star
39

IL-explorer

Utility window to view Intermediate Language (IL) for any type in Unity Project πŸ”¬
C#
1
star