• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
Animatis

Plugins + Scripts Animatis

Download [1.15 MB]

🔄 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
Here is a small but crucial fix that was overlooked.

Big "thank you" too oppai500 for pointing out the save issue 🤗

So what was fixed? :

1. ✅ Save dialog - Now shows text field and save button properly
2. ✅ Removed broken defaultVal API call - Morphs now reset to 0 safely
3. ✅ Fixed dictionary crash risk - Now checks if key exists before accessing
4. ✅ Added error handling - Trigger restoration won't crash on bad data
Animatis - Update Log 1.4.5

Recent Improvements

🎬 Smooth Animation Crossfading
- Animations now blend smoothly between each other instead of snapping instantly
- Set "Transition Time" (0.5-2 seconds recommended) for silky-smooth transitions
- Controllers and morphs fade seamlessly from one animation to the next
- Set to 0 seconds for instant transitions (old behavior)

🎯 Hold Final Pose
- Non-looping animations now stop at their final keyframe instead of resetting
- Characters hold the end pose naturally (perfect for gestures, dance moves, etc.)
- No more jarring snap back to the start position
- Manual "Stop" button still resets controllers if needed

💡 Why This Matters:
- Professional feel - Transitions look polished and natural
- Better UX - See exactly where animations end
- Creative freedom - Chain animations together smoothly with crossfading

How to use crossfading:
1. Create two animations with keyframes
2. Set Animation 1's "Next Animation" to Animation 2
3. Adjust "Transition Time" slider (1 second = smooth blend)
4. Play Animation 1 - watch it smoothly crossfade into Animation 2!
Back
Top Bottom