Skip to content

soufianekhiat/ImAnim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ImAnim

Animation Engine for Dear ImGui

Version License

ImAnimDemo_Hero_1 0 0

ImAnim brings modern animation capabilities to ImGui applications. Write smooth UI animations with minimal code.

Version 1.0.0 - First Official Release

This is the first stable release of ImAnim, featuring a complete animation toolkit for Dear ImGui.

// Animate anything in one line
float alpha = iam_tween_float(id, channel, hovered ? 1.0f : 0.5f, 0.3f, ease, policy, dt);

Why ImAnim?

  • Immediate-mode friendly - Works naturally with ImGui's paradigm
  • Zero dependencies - Only requires Dear ImGui
  • Large easing collection - 30+ easing functions including spring physics
  • Perceptual color blending - OKLAB and OKLCH
  • Responsive layouts - Anchor-relative animations that survive window resizing

Features at a Glance

Category Capabilities
Tweens Float, Vec2, Vec4, Int, Color with crossfade/cut/queue policies
Clips Timeline keyframes, looping, callbacks, chaining, stagger, variations
Easing Quad to Bounce presets, cubic-bezier, steps, spring physics, per-axis
Paths Bezier curves, Catmull-Rom splines, path morphing, text along paths
Transforms Position, rotation, scale with rotation modes
Procedural Oscillators, shake, wiggle, Perlin/Simplex noise
Colors Gradients, style interpolation, OKLAB/OKLCH blending
Advanced Layering/blending, resolved tweens, drag feedback, scroll animation
Tools Debug inspector, profiler, save/load, memory management

Quick Integration

Step 1: Copy im_anim.h and im_anim.cpp to your project.

Step 2: Add two lines after ImGui::NewFrame():

ImGui::NewFrame();

// Add these two lines
iam_update_begin_frame();
iam_clip_update(ImGui::GetIO().DeltaTime);

// Your UI code...

Step 3: Animate! Here's a hover effect:

bool hovered = ImGui::IsItemHovered();
float scale = iam_tween_float(
    ImGui::GetID("btn"), ImHashStr("scale"),
    hovered ? 1.1f : 1.0f, 0.2f,
    iam_ease_preset(iam_ease_out_back),
    iam_policy_crossfade,
    ImGui::GetIO().DeltaTime
);

That's it. No build system changes, no external dependencies.

Debug helper

  • Timeline for clips with tooltip helpers: ImAnimDemo_XukMAvrwhw

  • Support for delayed start: ImAnimDemo_2fQKeGBaLG

Building Examples

Windows

Open examples/ImAnim_vs2022_Win64.sln in Visual Studio 2022 and select a configuration:

Configuration Backend
Release_Win32_DX11 Win32 + DirectX11
Release_GLFW_OpenGL3 GLFW + OpenGL3
Release_SDL2_OpenGL3 SDL2 + OpenGL3
Release_ImPlatform ImPlatform abstraction

Debug configurations are also available for each backend.

Linux / macOS

Each backend has its own Makefile:

cd examples/glfw_opengl3
make

# or
cd examples/sdl2_opengl3
make

Documentation

Comprehensive guides for every ImAnim feature, organized by category. Each doc includes code examples and API references.

Getting Started

Core Animation

  • Tweens - Immediate-mode animation
  • Clips - Timeline-based keyframe animation
  • Easing - All 30+ easing functions

Motion & Paths

Effects

Colors & Styles

Advanced Features

Tools & Debug

  • Debug - Inspector and debugging tools
  • Advanced - Profiler, persistence, memory management

Interactive Demo

The im_anim_demo.cpp file provides a comprehensive playground for exploring all ImAnim features. Call ImAnimDemoWindow() to display it.

Demo Categories

Category What You'll Find
Easing & Tweens Easing gallery, custom bezier editor, spring physics, per-axis easing
Interactive Widgets Animated buttons, toggle switches, hover cards, progress indicators
Clip-Based Animations Timeline keyframes, looping, callbacks, chaining, layering system
Procedural Animations Oscillators, shake/wiggle effects, Perlin/Simplex noise
Motion Paths Bezier curves, Catmull-Rom splines, path morphing, text along paths
Advanced Interpolation Gradients, transforms, style interpolation, text stagger
Utilities ImDrawList animations, resize-aware helpers, scroll animation, drag feedback
Debug Tools Inspector, profiler, memory stats
Stress Test Performance benchmarks with thousands of concurrent animations

Use Cases

The demo showcases practical UI patterns you can adapt:

  • Animated Buttons - Hover scaling, press feedback, icon animations
  • Toggle Switches - Smooth state transitions with easing
  • Hover Cards - Expand/collapse with spring physics
  • List Stagger - Cascading item reveal animations
  • Grid Reveal - Wave-based grid animations
  • Dropping Cards - Physics-inspired card animations
  • Health Bars - Color gradient health indicators
  • Loading Indicators - Pulsing rings, spinning elements
  • Error Feedback - Shake effects for invalid input
  • Scroll Navigation - Smooth scroll-to-section animations
Animated Tag
ImAnimDemo_a1h8amHeJp
Ripple Button
ImAnimDemo_XVoOtKSf3G
"Wait" Button
ImAnimDemo_2RPgqEAHHm
Data Visualization
ImAnimDemo_VnmpjDbMZh
ImAnimDemo_zI6R85WazP

Showcase

Visual examples of ImAnim capabilities in action.

Stagger Animations

List Stagger Grid Stagger Card Stagger
List Grid Cards

Easing & Curves

Easing Gallery Custom Bezier Wave Animations
Easing Bezier Waves

Colors & Transforms

Color Blending Gradient Transforms
Color Gradient Transform

Paths & Text

Motion Path Text Effects Variations
Path Text Variations

Procedural & Integration

Noise ImGui Widgets ImDrawList
Noise ImGui DrawList

Additional Examples

Oscillator Waves Transform Layers
Waves2 Transform2

Contributing

Development is supported through Patreon:

Patreon

For Contributors: Regenerating Projects

The Visual Studio solution is generated using Sharpmake. To regenerate projects after modifying the build configuration:

Prerequisites: .NET 6.0 SDK or later

# First time setup (builds Sharpmake)
cd examples
bootstrap.bat        # Windows
./bootstrap.sh       # Linux/macOS

# Regenerate projects
generate_projects.bat    # Windows
./generate_projects.sh   # Linux/macOS

License

MIT License - see LICENSE for details.


Made for the Dear ImGui community

About

Animation Engine for Dear ImGui

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages