• Hi Guest!

    We have posted a new VaM2 dev log on Patreon, starting a monthly cadence of written progress updates between Beta releases. Highlights include the new Gizmos System, Selection Carousel, and Modes System with Context-Specific Editing. Beta1.2 is 15 of 21 items complete.

    Read the full post on Patreon, or follow progress on the public Trello roadmap.
Animatis

Plugins + Scripts Animatis

Download [1.2 MB]
Animatis v1.6 - Critical Bug Fixes Update

Overview

This update fixes 6 critical bugs that were affecting animation quality and stability. All fixes focus on improving reliability and user experience.

---
🔧 What's Fixed

Major Fixes:

1. Rotation Animation Bug ⭐ HIGH IMPACT
- Problem: Controllers would sometimes rotate "the long way around" when updating keyframes in the middle of animations
- Fixed: Rotation interpolation now correctly chooses the shortest path between keyframes
- You'll notice: Much smoother rotation transitions, especially with large angle changes (180°+)

2. Curve Types Resetting ⭐ HIGH IMPACT
- Problem: When updating a keyframe, Smooth/Bezier curve settings would randomly reset to Linear
- Fixed: Curve types now properly persist when modifying keyframes
- You'll notice: No more constantly re-applying "Smooth" settings after tweaking poses!

3. Accidental Keyframe Deletion ⭐ HIGH IMPACT
- Problem: Deleting a keyframe could sometimes delete nearby keyframes too (if they were within 10ms)
- Fixed: Delete now removes ONLY the closest keyframe (5ms tolerance)
- You'll notice: More precise control - no more losing work to accidental deletions

---
Performance & Stability Fixes:

4. Memory Leak (Curve Type Data)
- Fixed orphaned curve type data accumulating over time
- Animations with lots of keyframe edits will run more efficiently

5. Memory Leak (Clear All Keyframes)
- Fixed curve type data not being cleared when using "Clear All Keyframes" button
- Cleaner memory usage overall

6. Division by Zero Protection
- Added safety checks for corrupted save files with invalid animation durations
- More crash-resistant when loading older/corrupted scenes

---
📋 Technical Details (For Plugin Developers)

Changed Files:

- SimpleAnimation.cs - 5 bug fixes (quaternion logic, curve type preservation, memory leaks)
- MorphAnimation.cs - 4 bug fixes (curve type preservation, memory leaks)
- SimpleTimeline.cs - 1 safety fix (division by zero)

Specific Changes:

1. Quaternion flip logic: Now finds keyframe BEFORE insertion point instead of last keyframe
2. SetKeyframe(): Preserves curve types and custom tangents across time tolerance
3. RemoveKeyAtTime(): Finds CLOSEST match instead of removing ALL within tolerance
4. RemoveKeyframe(): Cleans up curveTypes and customTangents dictionaries
5. ClearAllKeyframes(): Clears curve type dictionaries to prevent memory leaks
6. RefreshKeyframeMarkers(): Added zero-duration safety check

---
⚠️ Important Notes

- No breaking changes - All existing animations load normally
- Recommended: Re-save your animations after updating to ensure curve types are properly stored
- Tested: Thoroughly tested with complex multi-controller animations and duration changes


🙏 Credits

Special thanks to the community testers who reported these issues and helped identify the bugs!

Animatis – Update v1.6​


⭐ Visual Timeline Upgrade (Click-to-Jump + Keyframe Markers)​


Animatis now has an improved Visual Timeline to make scrubbing and editing much faster—without adding Timeline-level complexity.


Added​


  • Keyframe markers: All keyframes are displayed as vertical markers on the timeline bar
  • Click-to-jump: Click anywhere on the timeline bar to instantly jump to that time
  • Auto-refresh markers: Markers refresh when keyframes change

Improved​


  • Play resumes from current time: Play starts from your scrubbed position (not always from 0s)
  • More predictable playback: Only resets when the animation has actually finished

Why this matters​


You can now see where keyframes are at a glance, jump around instantly, and keep working from your current position. This gives you Timeline-style visual feedback with a fraction of the UI complexity—staying true to Animatis: more powerful, yet simpler.

🔄 Animatis Update 1.5 : Segment Speed & Keyframe Workflow Improvements (thnx Moleculo for the feedbacks :) )​


This update focuses on improving timing control, stability, and usability, especially when working with segment-based animation speed.


🕒 Two Speed Modes (Now Fully Separated)​


Animatis now uses two clearly defined speed modes:


  • Global Speed – one speed value for the entire animation
  • Segment Speed – individual speed control between keyframes

Only one mode is active at a time, ensuring predictable playback and removing timing conflicts.




🎯 Reliable Segment Speed System​


Segment speed has been reworked internally to be time-based and stable:


  • Segment boundaries are derived from a unified set of keyframe times
  • Speed is applied consistently regardless of controller or morph order
  • Editing, adding, or removing keyframes no longer breaks segment timing
  • Save/Load preserves segment speeds correctly

This makes segment speed reliable and suitable for real animation work, not just experimentation.




🗂 New Keyframes Tab (Cleaner & Easier to Use)​


Keyframe editing now has its own dedicated UI tab, designed for clarity:


  • Clear Global / Segment speed mode selection
  • Scrollable list of animation segments
  • Edit one segment at a time (no UI clutter)
  • Simple controls to reset or copy speed values

The goal is to make timing edits fast, readable, and intuitive.




🧠 Design Philosophy​


Animatis is not trying to replace Timeline.


Timeline excels at precision key editing.
Animatis focuses on motion flow, rhythm, and experimentation , with segment-level timing control.




✅ Result​


  • More predictable playback
  • Better timing control than before
  • Cleaner UI
  • Segment speed now feels intentional, not experimental

As always, thanks for the feedback, it directly helps shape Animatis.

Animatis 1.4.9 Update Summary​


This update focuses on stability, cleanup, and correctness.
No new features were added.




🐛 Bug Fixes​


1. Fixed critical compilation error (CS1061)


  • Issue: ControllerAnimation.keyframeSpeeds and MorphAnimation.keyframeSpeeds did not exist
  • Fix: Updated references to use SimpleAnimation.segmentSpeeds
  • Files: TimelineUI.cs (lines 364, 376, 729)

2. Fixed tab index bugs – Targets tab


  • Issue: “Open Target Manager” and “Back” buttons jumped to the wrong tab
  • Fix: SelectTab(1) → SelectTab(2)
  • Files: SimpleTimeline.cs (lines 680, 777)

3. Fixed tab index bug – Visual tab


  • Issue: “Refresh Timeline View” button switched to Targets tab
  • Fix: SelectTab(2) → SelectTab(3)
  • Files: SimpleTimeline.cs (line 867)

4. Fixed storable cleanup leak


  • Issue: segmentSpeedStorable was not deregistered during cleanup
  • Fix: Proper deregistration added alongside timeStorable
  • Files: TimelineUI.cs (line 600)



🗑️ Feature Removal – Segment Speed System​


The segment speed system has been fully removed due to instability and incorrect behavior.


Removed components:


  • ❌ KeyframeSpeed class (step-based lookup, not curve-based)
  • ❌ segmentSpeeds list and segmentSpeedCurve from SimpleAnimation
  • ❌ All segment speed UI (sliders, labels, callbacks)
  • ❌ All segment speed–related methods in TimelineUI (6 methods)
  • ❌ Segment speed save/load logic
  • ❌ Segment speed playback logic in SimpleTimeline

Result:
Animation playback now relies solely on the simple and reliable global speed slider.




🎯 Architecture Notes​


  • Segment speeds were briefly refactored to use Unity’s AnimationCurve
  • Linear tangents and proper interpolation were implemented
  • Behavior was changed from multiplying global speed to overriding it
  • Despite improvements, the system remained unreliable and was fully removed



📊 Code Quality & Cleanup​


  • ~400+ lines of problematic code removed
  • Cleaned files:
    • SimpleAnimation.cs
    • SimpleTimeline.cs
    • TimelineUI.cs
  • Fixed 1 critical compile-blocking error
  • Fixed 3 tab navigation issues
  • Removed unused validation logic



✅ Current State​


  • ✅ Compiles successfully
  • ✅ All tabs navigate correctly
  • ✅ No storable leaks
  • ✅ Clean, maintainable codebase
  • ✅ Uses standard VaM patterns
  • ✅ Animation playback uses global speed only

Animatis Update 1.4.8 - MULTI-PLAY Tab + Controller Exclusions (Layered Playback)​


This update introduces multi-animation playback clean, predictable, and easy to manage.


✅ What’s new​


  • Added a dedicated “MULTI-PLAY” tab
  • New CreateMultiPlayTab() UI:
    • Clear header + master/slave explanation
    • Per-animation controls (Play / Stop / Follow Master Time / Exclusions)
  • Removed the old multi-play section from the Animation tab
  • Updated all currentTab == checks across the UI code
  • RefreshMultiAnimationControls() now correctly runs on currentTab == 1

🧠 MULTI-PLAY rule (important)​


MULTI-PLAY works by layering animations — but:


A controller (or morph) can only be driven by ONE animation at a time.
If two animations both have the same controller enabled, they will conflict (fight each other / jitter / overwrite).


✅ Solution: Exclusions​


Each animation now has Exclusions, so you can decide exactly what it controls.


Example workflow:


  • Animation A: Body + Legs
  • Animation B: Arms + Head
  • Disable overlapping controllers in one of them, and the two animations can play together cleanly.

1765860820732.png
1765860843820.png

Animatis Update — Per-Segment Speed + UI Polish​


This update adds a feature that was requested: variable playback speed between keyframes, so you can control pacing realistically without adding a ton of extra keys.

Big thank you to Moleculo for the suggestion!🍺

🚀 New: Per-Segment Speed (between keyframes)​


You can now set a speed multiplier per keyframe segment (the segment after a keyframe).


Example:


  • Key @ 0.0s → 0.5x (slow)
  • Key @ 2.0s → 2.0x (fast)
  • Key @ 4.0s → 1.0x (normal)

Result:


  • 0→2 seconds plays slower (more natural easing/weight)
  • 2→4 seconds plays faster (snappier motion)
  • No need to “spam” extra keyframes just to shape timing

🎛️ UI: Segment Speed Slider​


In the Animation tab you’ll find:


  • Segment Speed (after keyframe) slider (0.1x → 3.0x)
  • Scrub to a keyframe and adjust speed
  • Speed is applied to the segment after that keyframe

👁️ Subtle Visual Indicators (no clutter)​


If you’ve modified any segment speeds, the keyframe info panel will show a SEGMENT SPEEDS section listing only the non-default segments, sorted by time.


Icons:


  • «« very slow
  • « slow
  • » fast
  • »» very fast

This stays hidden when everything is 1.0x, so the UI remains clean.


💾 Saved with your animation​


Segment speeds are saved/loaded with animation data. Older animations remain compatible (defaults to 1.0x everywhere).


🧼 UI Layout Cleanup​


A bunch of small polish fixes to make the Animation tab flow better:


  • Controls are now grouped tightly under the timeline scrubber
  • Removed unnecessary spacing gaps
  • Play / Stop moved up where you expect them (no longer buried under the info field)
  • Sequencing section moved to sit directly under the Speed controls on the left side

⭐ Animatis 1.4.6 — New Features, Improvements & Bug Fixes


This update introduces several powerful new features that expand how Animatis can be used inside scenes — including full external trigger control, selective keyframe copying, per-animation target settings, and improved stability across the system.




🔧 1. JSONStorable Actions for External Control


Animatis can now be controlled directly from other plugins or scene systems such as:


  • LogicBricks
  • Timeline
  • Story/Dialogue plugins
  • VaM triggers

New actions added:


  • PlayTargetAnimation — Plays an animation by name (set TargetAnimationName first)
  • PlayNextAnimation — Moves to the next animation
  • PlayPreviousAnimation — Moves to the previous animation

Existing actions:


  • PlayAnimation
  • StopAnimation
  • ResetAnimation

This makes Animatis fully trigger-friendly and ideal for complex, automated scenes.




🎨 2. Selective Keyframe Copying (New Copy/Paste System)


You now have precise control over what data is copied:


  • Copy All Keyframes (original behavior)
  • Copy Controllers Only
  • Copy Morphs Only

Ideal for:​


  • Copying hand poses without affecting body position
  • Copying facial expressions without modifying controllers
  • Repeating timing events in multiple animations

This greatly improves workflow accuracy.




🎛️ 3. Per-Animation Target Control


Each animation can now override which targets it affects.


New functionality:​


  • Global target list still exists
  • But animations can enable/disable individual controllers or morphs
  • Disabled items are visually marked with [DISABLED]
  • Color-coded buttons (green = active, orange = disabled)
  • Saved and loaded per animation

Example use cases:​


  • Idle animation without hand movement
  • Gesture animation with active hand controllers
  • Static morphs while animating facial expressions
  • Mixing animated and non-animated targets in one clip

This brings Animatis closer to a full animation editor.




👁️ 4. Visual Tab (Coming Soon)


A new visual editing mode is planned and appears in the UI as “Coming soon” — more features will arrive in future versions.




🐞 5. Bug Fixes


  • Fixed the loop-trigger boundary bug (triggers now fire correctly when looping end → start)
  • Improved morph blending stability to reduce overshoot and jitter in rapid transitions



📜 License Update


Animatis is now released under CC BY-SA, ensuring compatibility with VaM Hub license rules and allowing community-friendly sharing while preserving attribution.




🙏 Credits


Special thanks to MacGruber, whose utilities and best practices continue to inspire safer and more efficient trigger handling across the VaM community.




⭐ Conclusion


Animatis 1.4.6 focuses on precision, control, and external interoperability — making it one of the most flexible animation tools available for VaM.
Thank you to everyone who provided feedback and feature ideas!

Animatis Update – New Features & Improvements


✔ Feature 1: JSONStorable Actions for External Control


Animatis can now be controlled directly from other plugins (LogicBricks, Timeline, scene triggers, etc.) through new JSONStorable Action endpoints.


New actions added:


  • PlayTargetAnimation – Play an animation by name
    (Set the TargetAnimationName string parameter first)
  • PlayNextAnimation – Jump to the next animation
  • PlayPreviousAnimation – Jump to the previous animation

Existing actions:


  • PlayAnimation
  • StopAnimation
  • ResetAnimation

These actions make Animatis fully trigger-friendly and ideal for building complex scene sequences controlled externally.




✔ Feature 2: Enhanced Copy/Paste System (Selective Keyframe Copying)


You now have full control over what type of keyframes are copied:


  • Copy All Keyframes
    Copies everything at the current time (original behavior)
  • Copy Controllers Only
    Copies only controller position/rotation keyframes
  • Copy Morphs Only
    Copies only morph keyframes

Use cases include:


  • Copy a hand pose without affecting body position
  • Copy a facial expression without touching controllers
  • Duplicate complex timing moments across the animation

This massively improves precision and reduces accidental overwriting.




✔ Feature 3: Per-Animation Target Control (Enable/Disable per animation)


Animatis now supports animation-specific target toggling, giving you granular control over what each animation affects.


New behavior:


  • Global targets are still shared across all animations (as before)
  • But now you can enable or disable individual controllers and morphs per animation
  • UI clearly marks disabled targets with [DISABLED]
  • Color-coded toggle buttons (green = active, orange = disabled)
  • Fully saved/loaded with the animation data

Examples:


  • Disable hand controllers in an “idle” animation, enable them in a “wave” animation
  • Keep some morphs static while animating others
  • Mix keyframed and non-keyframed targets inside the same animation clip

This gives Animatis a level of flexibility similar to advanced animation editors.

The Visual-Tab is a possible future im thinking implementing but as of now its marked as "(Coming soon)"


🐞 Bug Fixes


  • Fixed the loop trigger boundary bug — triggers now fire correctly when wrapping from end → start
  • Improved morph blending to prevent overshoot and instability in rapid transitions

1764709740044.png
nothing new, just updated license.
Animatis Update - Animation Transition Fix

Fixed Issues:
1. ✅ Animation transitions now work correctly - Animation 2 (and subsequent animations) now play properly when
using the "Next Animation" feature
2. ✅ Added "Add Default Controllers" button - Quickly adds all 7 main controllers (head, chest, hip, left/right hands, left/right feet)
to all animations with one click
3. ✅ Fixed animation dropdown sync - The animation dropdown now correctly updates when animations transition
automatically

Technical Fixes:
- Fixed infinite loop where transitions were being called every frame, causing the destination animation to get
stuck at ~0.04 seconds
- Added check to prevent Animation 1 from continuously advancing past its end and re-triggering transitions
- Fixed currentAnimation not updating correctly when user had manually switched animations in the dropdown
- Clamped animation time to duration to prevent overshooting during transitions


How to Use:
1. Set Loop OFF on Animation 1 if you want it to transition to another animation
2. Set "Next Animation" to the animation you want to play next
3. Animation 1 will smoothly crossfade to the next animation when it finishes
4. Use the new "Add Default Controllers" button to quickly add common controllers to all animations
Back
Top Bottom