[HN Gopher] ImAnim: Modern animation capabilities to ImGui appli...
       ___________________________________________________________________
        
       ImAnim: Modern animation capabilities to ImGui applications
        
       Author : klaussilveira
       Score  : 67 points
       Date   : 2025-12-01 16:11 UTC (6 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | ryanmcbride wrote:
       | oh wow this timing is incredible for me thank you, this is
       | exactly the type of thing I needed and this is EXACTLY my
       | aesthetic
        
       | erichocean wrote:
       | If the author is around, can you do a short writeup on how this
       | implemented? I've got my own immediate-mode UI framework and am
       | curious how you did it.
        
         | hilti wrote:
         | Not the author but it's implemented in only two files which can
         | be studied on Github.
        
         | SoufianeGfx wrote:
         | The author here. You have various concepts but overall we store
         | the start time and that's it :D the rest are details, clip,
         | tween, easing function, anchor have surviving resizing, stagger
         | to generate the same anim with variations. Or variations of
         | clips, loop. Proper anim of colors in oklab, oklch, linear
         | srgb, hsl, ... Anyway I cannot explain much it's really simple
         | code with a userfriendly front-end.
        
           | erichocean wrote:
           | Thanks, I had Claude walk me through the code if anyone is
           | curious:
           | 
           | https://claude.ai/share/12357895-d585-4475-93fb-cdb5eba5dd76
           | 
           | tl;dr It's not an implicit animation framework like Core
           | Animation or CSS animations. Instead, each frame you get the
           | current value which is then used, and the actual tween curve
           | only changes when you call a tween function with a new
           | target; otherwise, you get the current (tweened) value since
           | the last time the target changed (which might be the final
           | value).
        
             | SoufianeGfx wrote:
             | If Claude can implement my todo list: * Lazy eval (cost
             | only at the first run) * Animation clipping (evaluate only
             | the visible one) I'll accept the PR.
        
       | elpocko wrote:
       | ImGui is great if you need an ad-hoc UI for development/debug
       | tools, but it's not meant to be used in actual applications aimed
       | at end-users. I can't speak for other devs but I certainly
       | wouldn't want my development tools waste time with pointless
       | animations. I hope this doesn't encourage even more devs to build
       | inaccessible software featuring ImGui's idiosyncratic, non-
       | standard UX.
        
         | hilti wrote:
         | I agree with your points about ImGui's intended use case,
         | though I think the landscape is a bit more nuanced. You're
         | right that ImGui excels for dev tools and that its non-standard
         | UX isn't ideal for end-user apps. That said, devs reach for
         | ImGui in end-user apps because lightweight cross-platform
         | alternatives are scarce. Qt is heavy, Electron is heavier,
         | native toolkits mean multiple codebases. I built a techy tool
         | with ImGui (JSONL Viewer Pro) and it works well enough for
         | users who care more about functionality than polish. Not saying
         | it's right for consumer apps, but for technical tools it can be
         | pragmatic.
        
           | embedding-shape wrote:
           | It also have bindings for a ton of languages, so for people
           | who jump languages a lot, it's always nice to be able to
           | reach for something more familiar that you can learn across
           | different codebases but same concepts. Same thing for the
           | backend/engine, UI code remains the same, but easy to switch
           | to others or even wrapping it yourself for platforms that are
           | under NDA.
        
           | Froztnova wrote:
           | I know that at least one modding framework for a certain
           | online game makes use of ImGui (or some equivalent thereof).
           | Given the use case it does make a lot of sense, considering
           | they're essentially strapping a third party UI onto an
           | existing 3D accelerated application, not sure what else you'd
           | use for that. Since the users are technical enough to install
           | the mod framework anyways, they tend to be the sort that can
           | handle the UI.
           | 
           | It can be a bit wonky though, I regularly spot UI/UX
           | decisions that seem to map more closely to what the developer
           | is doing under the hood, or their own mental model of the
           | problem, than what one might consider to be an intuitive way
           | of interacting with the system.
        
           | tonyarkles wrote:
           | > but for technical tools it can be pragmatic
           | 
           | I've thoroughly enjoyed using ImGui for tooling around image
           | processing, computational geometry, a bunch of 3D projection
           | stuff. The fact that it's based on OpenGL or Vulkan or
           | whatever backend you want is a big win for this kind of work.
           | I can just take a bunch of pixels, throw them into a texture,
           | and render some quads with those textures painted on them
           | after going through some 2D transformations or 3D
           | projection/transformation. It's quite beautiful for all of
           | this. ImPlot for doing basic data plotting and the built-in
           | ImGui widgets for controlling the whole thing.
        
         | klaussilveira wrote:
         | imgui success is a silent protest from tons of C++ developers,
         | fed up with the over-engineering and enterprise-ification of
         | everything in this bloated ecosystem.
        
           | binary132 wrote:
           | "and that's a bad thing!"
        
         | swatcoder wrote:
         | For applications where the aim is high sales volume and low
         | support, you're absolutely right.
         | 
         | But "development/debug tools" is actually just a subset of
         | professional or industrial utility applications where user
         | count is low and support is on the extremes (either "capable
         | self-support" or "Yes, Bob, of course we'll add that for you").
         | 
         | And in those utility applications, you probably don't need the
         | noisy _toy_ animations associated with modern consumer
         | software, but animated data representations can be really
         | valuable.
        
         | dymk wrote:
         | IME, it's great for building full standalone applications. I've
         | used it to build several internal tools for non-engineers. A
         | tool like that doesn't need to work with a screen reader, or
         | have native buttons, etc. It needs to be easy to build and
         | iterate on.
         | 
         | This isn't to say a tool for non-engineers should have
         | animations to make it useful. ImAnim should probably be used
         | sparingly, if at all.
         | 
         | If you need the features of a full GUI toolkit, then by all
         | means use Qt or wxWidgets etc, but that's a very big jump in
         | project complexity.
        
         | SoufianeGfx wrote:
         | I depends on the field. On VFX/Game world, Dear ImGui seem to
         | be the way to go. Almost all news comer in this field sells
         | Dear ImGui based software. It's fast and light and trivially
         | profilable that's what matter matter for real time
         | applications. And bonus can be integrated in any platform in
         | few hour of devs. Before having any ui in VR or game console
         | (not necessary debug/dev tool) in Qt or anything else it will
         | take ages.
        
         | johnnyanmac wrote:
         | >I certainly wouldn't want my development tools waste time with
         | pointless animations.
         | 
         | On one hand I agree. On the other: where are these high
         | performance real-time GUI kits these days? If it came down to
         | IMGUI or shoving Electron into my app...
        
         | Der_Einzige wrote:
         | I'm still waiting for the day for someone to get a clue and
         | build a pro or prosumer level LLM front end with Imgui. It's
         | the perfect use case for imgui to have a "blender" type
         | product.
        
       | jandrese wrote:
       | I was interested and wanted to see how much the animations burn
       | CPU and whatnot, so I cloned the repo and went to try to build
       | the demo but everything went to hell. The build environment is
       | some .net thing written in C#. It comes with a "bootstrap.sh"
       | file to get it going that immediately fails, even after
       | installing the dotnet development environment. I fiddled around
       | with it for some time before giving up because I was hitting an
       | error about a Targeting Pack that was going to require me to hit
       | a Microsoft website to fix.
       | 
       | But the README says the build process it just a couple of files
       | so I figured I could just build it by hand. This involved
       | downloading a couple more repos from the author's repo and
       | setting up some symlinks, includes, and defines that I figured
       | out through trial and error, but in the end I was not successful
       | in getting the demo to build. I tried a combo of SDL2 and OpenGL3
       | but it bombed out with a C++ error about too many initalizers.
       | The only good news is that I was able to cleanly build the
       | demo_im_app code, but the main requires the ImPlatform which
       | appears to be buggy.
       | 
       | Update: I figured out that you need to run a git submodule update
       | command first. The shell script is supposed to tell you this but
       | it is broken. This does a bunch of work but then dies because g++
       | doesn't stick the string ".exe" on the end of executibles. Also,
       | the script looks in the wrong place for the output. A few text
       | fixes in the bootstrap.sh and generate_projects.sh files and it
       | gets to a point where the build is dying due to not having "main"
       | or "sharpmake" objects in the current context, whatever that
       | means. I don't know enough about C# to go further, especially for
       | what was supposed to be a quickie 10 minute test. I'm hoping
       | someone else figures this out and updates the repo.
        
         | SoufianeGfx wrote:
         | You should be run bootstrap and generate_project script. For
         | ImPlatform I didn't have setup to tests all permutations. For
         | ImPlatform you should try glfw-opengl3 or Win32-dx11 for
         | windows.
        
           | jandrese wrote:
           | bootstrap.sh is buggy. The message about running the git
           | submodule command is never shown because the directory
           | already exists in the repo.
           | 
           | It also looks specifically for .exe files, when a linux
           | compiler won't append that suffix.
           | 
           | It also looks in the x64 directory, which was not created
           | when I ran it.
           | 
           | For some reason even though I have dotnet 8.x installed it
           | compiled with dotnet 6.x and complained about 6.x being
           | obsolete.
           | 
           | The generate_project script also looks for a .exe file, but
           | even when stripped off the process fails with namespace
           | errors for 'main' and 'sharpmake'. These errors occur in a
           | temporary file unfortunately so they're hard to investigate.
        
         | SoufianeGfx wrote:
         | For perf usage the demo for 100+ of anims (clip, tween,
         | stagger, ...) it cost between 2-5 ms depending on your computer
         | (that's not mean a proper benchmarks).
        
       | mwkaufma wrote:
       | Bliss:                 Installation              Add two files to
       | your project:              src/im_anim.h       src/im_anim.cpp
       | That's it. No build system changes, no external dependencies.
        
         | SoufianeGfx wrote:
         | Exactly! And add the demo file to see it in action.
        
       ___________________________________________________________________
       (page generated 2025-12-01 23:00 UTC)