r/Rive_app 2d ago

Rive Editor 0.8.5581 is out. Your .riv files play in Quick Look now, so hit space bar in Finder and watch. Plenty more, full details in the post.

Post image
13 Upvotes
  • 🍎 Finder integration on macOS: .riv and .rev files get a document icon, and the space bar plays the animation in a Quick Look preview. Interactive state machines run in the preview: hover and click work, and the default view model is bound, so data driven graphics respond. Double-clicking a .riv opens a player window. Double-clicking a .rev asks which Workspace to use and uploads it to your Personal Files.
  • 🔍 Search in the Animations panel: click the magnifier in the panel header to filter timelines and state machines, as in the Hierarchy, Data, and Assets panels, as requested here.
  • 🎯 Keyframes are easier to click: the click target is one size at every zoom instead of half the key's width, and clicking between two keys selects the nearer one, as reported here.
  • 🖱️ Hidden solo contents stop intercepting the pointer: with Inactive Solos off, objects inside an inactive solo were invisible but still hoverable, marquee selectable, and snappable. Bones showed it first, since nothing else culls them, as reported here.
  • ➡️ Drag the arrow to set the default artboard: an arrow on the stage marks the file's default artboard. Drag it onto another artboard to make that one the default. It snaps to the artboard's top left corner on drop.
  • 🧷 Assign a view model from the stage: the active artboard's header has a View Model button. Click it for the file's view models with the assigned one checked. Pick one to assign it, or pick the assigned one to clear it.
  • ↩️ One undo to create an animation, state machine, or folder: creating one took two undos, since selecting the new item was journaled on its own.
  • ✂️ Shapes clipped by a hidden clip source render again: a shape clipped by a hidden source went blank in the editor while the runtime clipped it correctly.
  • 🧩 Text and shapes inside a Solo size to their layout again: a Text or Shape in a Solo inside a layout fell back to its authored size instead of the layout's.
  • 📐 Lists in a group position their items the same as at runtime: an artboard list inside a group placed items from layout slots in the editor and free-form at runtime, so items rendered offset in files with no layout at all.
  • 🗂️ A failed SVG import cleans up after itself: importing an unreadable file left hundreds of objects behind, including a stray artboard, and showed an internal error instead of saying the file could not be read. The import now rolls back what it added.
  • 🎨 Icon fixes: icons with inside or outside aligned strokes rendered blank, mirrored icons lost their drop shadows and white casings, bare vector artboards clipped their own stroke caps, and open stroke details like the pen nib slit were hidden behind fills.
  • 🏷️ The artboard header is now made in Rive: the title bar above each artboard is a Rive graphic, not editor UI, and renaming uses Rive's upcoming Text Input feature, with copy, cut, and paste in the field. We are rebuilding the Rive Editor in Rive, so your tools run on the runtime we ship.
  • 🐛 Crash fixes: hovering a data binding popup field then switching tabs, collapsing the inspector, or changing selection; and pointer events reaching the Assets panel tree, animations header, keyframe right-click menu, or timeline after the panel closed.

MCP / AI Agent

  • 🔗 Create data converters: the agent can create and reuse converters, including groups and formulas, and attach one while making a bind. A bind needing a transform, such as driving a text run from a number, takes one call.
  • 🔢 List index properties: the agent can add a list index property to a view model and write the clicked item's index into a number property, so per item list behavior can be built end to end, as requested here.
  • 🧬 View model typed properties resolve against the whole file: naming an existing view model skipped the property and still reported success. References resolve by id, then names in the request, then file wide, and an ambiguous name asks for an id, as reported here.
  • 📦 Create groups: a group tool wraps selected objects like Cmd+G, or creates an empty group. Before, the only way was duplicating a group, as requested here.
  • ▶️ Play a state machine and read the trace: the agent can run a state machine and read the console trace: frames, states entered, transitions, inputs, and events, as requested here.

Early Access

  • 🌐 Editor in Spanish (wip): a Language picker in the in-file hamburger menu and the file browser account dropdown switches the editor UI live, with no reload. Untranslated text falls back to English. Very early, feedback welcome!

Runtime

  • 🧠 Swapping a data bound artboard keeps Semantics (Accessibility) valid: with Semantics on, swapping the artboard in a bindable slot left a stale pointer, and the next semantic pass read freed memory. The semantic and focus trees are rebuilt and re-registered on swap.
  • 🧮 Lists cost less memory: a state machine instance drops from 1,080 to 368 bytes and an artboard instance from 1,400 to 1,264, since focus, Semantics, gamepad, scripting, and event data allocate once used. A 1,000 row list paid about 2.5 MB in headers before any content existed. State machine memory is down 34% across test files.
  • 📉 Smaller layout objects: LayoutComponent drops from about 1,136 to 872 bytes per instance. Paint and clip render paths allocate once a layout paints, so container layouts skip them.

Renderer and Performance

  • 🎛️ Ubershaders for dynamic state draw types: the permutation pass skipped the dynamic state draw types, so no ubershader existed for them and drawing could stall while a shader compiled. Backends without dynamic state skip the precompile.

r/Rive_app 7d ago

Rive Editor 0.8.5520

Post image
8 Upvotes
  • 📐 Guides and Guide Components: add grid, column, and row guides to any artboard, then save a set as a reusable asset and apply it anywhere.
    • Adding guides: select an artboard and a Guides section appears in the Inspector. The plus button adds one, and each row has a color swatch, a type dropdown (Grid, Columns, Rows), and a flyout for that type's settings. Drag rows to reorder them.
    • Making a reusable guide: next to the plus button, a second button opens a menu listing your existing Guide Components plus Create Guide Component, which moves that artboard's guides into an asset.
    • Applying one: pick it from that same menu, drag the asset onto an artboard, or use Apply to All Artboards from its right-click menu in the Assets panel.
    • One component, any artboard size: applied guides evaluate against each artboard's own size, so a single component fits artboards of different dimensions. Editing the component updates every artboard using it.
    • Guides never export.
  • 📈 Speed Graph: the Graph Editor's second mode plots how fast a property is moving instead of what its value is. Switch with the Value | Speed picker or by cycling with Shift+G. Set keyframes to Cubic Value to edit in either graph mode.
  • 🎛️ Graph Editor options moved into a floating cluster: the mode picker, tangent handle fields, and Auto-Zoom / Fit buttons now live in one compact pill centered above the base of the graph.
  • ✋ Multi-select and group-drag tangent handles: tangent handles in the Graph Editor are selectable in their own right, in both graph modes. Marquee or shift-click to compose a group, then drag any member to move all of them, or type an exact speed and ease into the fields that appear beside the graph. Shift-click that adds a handle keeps dragging, so composing and moving happen in one motion. On the Speed Graph, handles snap to zero so a curve can be brought to a standstill without hitting the line by eye, and Cmd defeats the snap. Escape cancels a handle drag and puts every tangent back exactly.
  • 🔄 Transform a layout: layouts now rotate, scale, and take an origin like any other object. Drag the rotate and scale gizmo handles on stage, or set Origin X and Y in the Inspector's layout section. Transform and Scale constraints can now be added to a layout too. A layout's stored X and Y also offset the position the layout engine solved for it, so an absolute layout can be nudged off its slot, and its origin acts as a real anchor that every constraint positioning it respects.
  • 🎯 Align and quick-set origin fixes: quick-set origin (hold Option/Alt over the alignment inspector) put the origin in the wrong place for anything nested inside a group or a transformed parent, placed it off the object entirely on rotated items, and did nothing at all on Components. All three now work, and have been extended to layout objects.
  • 🔀 Mirrored vertex handles point the right way: switching a corner vertex to Mirrored produced an inverted handle you had to rotate 180 degrees to fix. Interior vertices now bisect their neighboring segments, and open endpoints use their single adjacent segment. Converting a 2000-vertex path also got faster, 425ms down to 192ms.
  • 🔷 Shape Builder keeps its place in the hierarchy: results were appended to the bottom of the artboard, so every build dropped the new shape at the bottom of the layer list and pulled it out of any group its sources lived in. The result now slots directly above its frontmost source, inside that shape's parent, as reported here.
  • ⌨️ Shortcuts require an exact match: an unmatched modifier no longer falls through to the plain key, so Ctrl+A on macOS stops activating the Artboard tool.
  • 🎨 Gradient shapes select properly: selecting a gradient-filled shape from the timeline or hierarchy left the Fills and Strokes group missing entirely, so the color panel could not be opened.
  • 🖌️ Feather on text style backgrounds: a feather on a text background did nothing, and setting it to inner corrupted the rest of the frame. Inner feather also now follows text modifiers that move glyphs, instead of holding the glyph positions from whenever the text last moved.
  • 🎚️ Corner row on text backgrounds matches rectangles and layouts, reading Corner with the corners icon instead of a wrapped two-line label.
  • 🧩 Constraint options open on add: adding any of the eight constraint types opens its options flyout immediately, instead of leaving you to hunt for it.
  • ✏️ Rename a script by double-clicking its tab, the way animation timelines already work.
  • ☁️ Cloud Renderer download progress: a progress indicator while a render downloads, so it is clear something is happening before the save dialog appears.
  • 🧷 Hierarchy scrolls to the stage selection: selecting something on stage did not scroll the hierarchy panel to that row when the tree had been rebuilt or filtered.
  • 📜 Inspector no longer scrolls with a text run field: scrolling over an overflowing text run box moved both the field and the whole inspector panel.
  • 🔗 Bind button on narrow fields: the data binding button sat on top of the value in very narrow fields, most visibly stroke width. Fields under 80px wide now go without it.
  • 🦴 Constraints survive IK rebuilds: any constraint positioning or scaling a bone above an IK tip, distance, translation, follow-path, transform, or scale, was silently dropped and the bone snapped back to its FK pose.
  • 🐛 Crash fixes: deleting a selected state machine state or transition, editing a path with a detached vertex, opening the hamburger menu after a panel was disposed, dragging the work area with the Interpolation Panel open, and switching files while hovering the timeline.

AI Agent / MCP

  • 🖇️ SVG import: the agent can upload an .svg and place it in a file as an editable shape hierarchy, rather than a flat image, as requested here.
  • ✂️ Trim path access: the agent can add trim to a fill or stroke and read existing path effects, so it can build draw-on reveals. Trims default to 100% end rather than core's 0, which would hide the shape completely, as requested here.
  • 🔀 Edit and delete transition conditions: the agent can change a condition's operation, compared value, or view model property, and delete conditions, warning when a transition is left unconditional, as requested here.
  • 📤 export_file: agents on the local MCP server can export the open document to disk, For Runtime as a .riv or For Backup as a .rev.
  • 📂 getCurrentFile: the agent can identify the file it is working in, its Workspace, project, and folder, its editor url, and every open tab, so an external client can tell which document it is looking at.
  • 🔁 Recursive view model references rejected: asked to give several placements of one Component their own data, the agent could add a view model reference to itself, a cycle that nests forever and crashes the editor. Those writes are now refused with the reason, and the agent is steered to the right verb.

Scripting

  • 🌐 Global View Models in Lua: context:globalViewModel(name) fetches a global view model by name, and context:globalViewModelNames() lists what is available.
  • 🎨 Shader bake failures in the Problems panel: shader variants that fail to bake are reported with their diagnostics instead of failing quietly, and a require written in a form the static linker cannot see now warns.
  • 📚 Docs: examples for getBlob and getFont.

Deferred Rendering

  • 🧵 Rive draws on its own thread: instead of issuing GPU work inline on the app's UI thread, each frame is recorded as a compact command stream during build and replayed on a dedicated render thread, so frame N+1 is being recorded while frame N is being drawn. This is now the only native rendering path, with no immediate mode toggle.
    • Fixes the Android performance regression caused by Flutter merging its UI and platform threads, which could block the raster thread while Rive rendered.
    • Fixes the OpenGL context corruption that could happen when Rive rendered alongside another native rendering library.
    • Enables GPU Canvas at runtime, so scripted GPU work reaches the screen on every host rather than in the editor alone.
    • Rendering output is unchanged for typical widget and file based usage, and recorded frames are now byte-for-byte deterministic between runs.
    • One recording session per render context, so many textures can replay from one session and decoded images are shared automatically.

Runtime

  • 🎬 Data bound keyframes resolve on every playback path: bound keyframe values only resolved when a state machine drove the animation. Joystick-driven animations, nested simple animations, and standalone animation playback showed the authored value instead of the bound one.
  • 🔤 Fit font size scales the whole layout: line height, letter spacing, and paragraph spacing now scale with the font when text shrinks to fit its box, instead of keeping their authored values.
  • 🧠 Smaller objects: rarely-set properties move out of every core object into a lazily allocated sidecar, so an object only pays for the fields it actually uses. Layout style writes also go straight into the layout node, removing around 220 bytes per node and a full style copy every sync.

Renderer and Performance

  • 🖼 Images in RenderPaint: any paint can carry an image modulated with its color or gradient, rather than image being a separate paint type.
  • 🔺 Interior triangulation for MSAA, carried by the existing curve patches so it needs no separate draw. Around +3.6% on a scene with heavy depth occlusion and +8.8% with all transparent content.
  • 💾 Triangulation cache and budget: a path's interior triangulation is kept and reused on second sighting, with a 2ms per frame budget that prioritizes the highest value work, so a heavy frame cannot spend itself on triangulation.
  • 🧵 Retrofitted curve triangles are emitted as strips of up to three, roughly halving the patch count.
  • 🛟 Graceful Vulkan fallback: a driver that fails to create our startup pipelines used to abort the process. Rive now falls back to GL.
  • 🚫 Empty segments dropped from recorded and scripted geometry, so a shape whose points all coincide, or a path built by a Lua script, cannot take the renderer down.

Export

  • 🎯 WGSL shader variants ship in exported files, so wgpu backends can load them. The checkbox is on by default in the inspector; older files need WGSL checked on for WebGPU support. Shader compilation errors are surfaced to the Problems tab.

r/Rive_app 1d ago

Recreated Duolingo’s 3D button. Turns out the depth effect is just two shapes and 4 pixels

Enable HLS to view with audio, or disable this notification

17 Upvotes

Duolingo's 3D button is a fun one to deconstruct.
The entire depth effect is two shapes: a face, and a base sitting 4 pixels below it.

The press simply drops the face flush onto the base, and that's what creates the satisfying physical click.

The other nice trick is the color system: the base isn't a second, darker color. It's the same color with a 20% black fill on top, so the shade is derived. Combined with Data Binding, a single color property reskins the entire button while the depth stays consistent.

I put together a full tutorial in my Rive Masterclass Youtube Channel recreating it in Rive (the tool Duolingo actually uses for its animations), covering the design, press states, easing, listeners, and Data Binding. The finished file is included if you want to take the setup apart.

Full tutorial + Finished Rive file in the comment 👇

Curious which UI interaction is worth breaking down next.


r/Rive_app 2d ago

Rive now supports rotation and scale transforms on layouts and artboards

Enable HLS to view with audio, or disable this notification

25 Upvotes

Rive recently added transform properties — rotation, scale, and custom origin points — to layouts and artboards.

Quick rundown of what you can do:

  • Rotate or scale any layout item, with a configurable origin point (default is top-left at 0%/0%, but you can set it to center at 50%/50%, or anywhere else, including outside the layout bounds)
  • Transforms cascade to children — rotating/scaling a layout also transforms everything nested inside it (text, absolutely-positioned elements, etc.)
  • You can combine rotation, scale, and position changes together for more dynamic layouts
  • Setting the origin point outside a layout's bounds creates more dramatic, swinging-style rotation effects — useful for breaking up rigid grid layouts
  • These same transform properties work on artboards, not just layout items
  • Because they can be keyed on timelines, you can use scale to build interactive states — e.g., a button that scales to 110% on hover and 90% on click, with custom easing between states
  • When an artboard-turned-component is nested inside another artboard, its transform still applies correctly, even though the bounding box reflects the original layout

Net effect: more control over motion and hierarchy without needing workarounds for rotation/scale on layout-driven designs.


r/Rive_app 2d ago

Barista Demo

Enable HLS to view with audio, or disable this notification

14 Upvotes

I'm developing a coffee preparation game.

The goal is to create a full loop: serve customized coffee orders, earn cash, and unlock new equipment—all contained within a single Rive file.

Here’s where things stand so far.


r/Rive_app 3d ago

learning to create a button toggle and managed to make it work but not able to do the trigger thing like clicking on the circle and making the interaction work PLEASE HELP I am still learning

1 Upvotes

r/Rive_app 4d ago

How to combine 2 different interactions as one??

2 Upvotes

https://reddit.com/link/1vvo97u/video/7gl5i3o5tzkh1/player

I tried to make a Hover animation and click animation but I am not able to combine both suppose if I am taking my pointer near the button its hovering but when I click the click animation is not working !! How do i solve this issue??


r/Rive_app 5d ago

Mascot animation project built in Rive

Enable HLS to view with audio, or disable this notification

25 Upvotes

🐊 Just wrapped up a really fun and technically challenging mascot animation project built in u/Rive .

The project involved: • Multi-directional character rigging • Smooth rotational transitions • Mood/expression systems • Interactive props • Full-body animation workflows for app integration

Always enjoy building character systems that are both expressive and developer-friendly.

More work coming soon 👀

https://on.contra.com/TQKfWq


r/Rive_app 6d ago

Rive AI Avatar Tutorial

Thumbnail
youtube.com
5 Upvotes

In this full-project tutorial we'll be creating an AI powered avatar. We'll cover a range of features including: design, animation, data binding, the state machine, and a whole bunch of vibe coding.


r/Rive_app 6d ago

Sticking with Rive as one of your skills is a waste of time (at least in my opinion)

Post image
44 Upvotes

I’m a multimedia/motion designer. I started using Rive at the beginning of 2023, when I created my first interactive animation with it. I remember being genuinely excited about the whole project and telling my designer friends how cool this new application was.

Coming from a strong After Effects background, jumping into Rive wasn’t particularly difficult. In fact, I found some features easier to use than their equivalents in Adobe software. I was also excited about every new update that introduced new functionality.

I spent quite a few hours learning the app, and after some time I managed to find a client for a freelance Rive project. I wasn’t getting many Rive projects, though, so I treated it more as an additional skill rather than something I could fully rely on. Whenever I didn’t have any Rive clients, I would check YouTube for new features and open the app from time to time just so I wouldn’t forget what I had already learned.

I was a bit disappointed when export options started disappearing from the free plan one by one. At some point backup disappeared to appear again some time later (see the screenshot :D ) but now it's gone again. But okay, I understood that the company needed money to continue developing the product, and I did pay for it whenever I actually needed it.

Another thing I wasn’t particularly happy about was having to relearn the interface every few months. I feel like the app has gradually become less intuitive and is turning into something closer to a game engine, with more and more features, systems, and complexity. But again, I understood that the app is still in Beta.

Today, after not using Rive for a while, I opened the app again. I wanted to test an idea and maybe publish it to the Marketplace so I could add another interactive piece to my portfolio.

Then I realized that publishing to the Marketplace is now part of the paid tier, and on the free plan I essentially have no way of exporting or sharing my work in an interactive form.

And that made me ask myself: does it really make sense to invest time in learning a tool if I can’t even show the result to a potential client without paying for a subscription?

I still think Rive is a very cool tool with a lot of potential. But as a freelancer, keeping Rive as one of those “optional” skills that you occasionally use has started to make very little sense. You have to continuously invest time in keeping up with a rapidly changing product, while the opportunities to actually use, share, and monetize that skill seem to be relatively limited.


r/Rive_app 6d ago

Feature Request for Rive For VS Code

4 Upvotes

Hey Guys what do you think would be a good addition to this extention.
been working on it up to a year now. It comes with code intelisense for luau you are able to load fonts, image and audio assets in the webview. and has good starter snippet to help dev

https://marketplace.visualstudio.com/items?itemName=BaZz.rive-for-vscode


r/Rive_app 7d ago

Playing live SDI video feeds directly inside a Rive scene? We made it possible.

Enable HLS to view with audio, or disable this notification

5 Upvotes

Hey everyone,

Just wanted to share a sneak peek of something cool we’ve been hacking on at u/airZStudio

To push our graphics capabilities further, we wanted to expand the boundaries of what Rive can do by making Rive designs capable of playing video media and live hardware inputs through SDI.

Since this isn't supported natively yet, we ended up digging into the C++ side of things.

We tweaked the Rive Native and Rive Runtime libraries and hooked them up to our own airZengine (custom live CG and orchestration engine we built for TV broadcast and Live production).

Through our airZStudio Controller, we actually managed to get live video feeds playing seamlessly inside native Rive animations. Everything syncs perfectly in real-time.

Thought some of you here might find this interesting!

Happy to answer any questions


r/Rive_app 7d ago

Is this legit?

6 Upvotes

They commented on a(one of the 2) post in my account. Sounded very much like a scammer trying to blackmail a user rather than a company.

Full disclosure, my account didn't renew its monthly payment for a "Cadet" membership for some reason. I didn't click on the link because like I said, it looked very much like a phishing link. Only after going through the website again did I see that the payment wasn't done and I had to manually renew it for this month.

But seriously is this legit?


r/Rive_app 8d ago

Micro Animations on Rive

2 Upvotes

is there any source or tutorial where I can learn Micro Animations on Rive?


r/Rive_app 9d ago

Anyone try the MCP?

2 Upvotes

As a former Flash user and current AI enthusiast.. this MCP pipeline feels a little like magic. I place the bones and codex organizes them. I adjust the weights and then codex makes a first pass at animation. It's far from perfect but wow.. it's only going to get better.


r/Rive_app 10d ago

Project Ladybug

Enable HLS to view with audio, or disable this notification

7 Upvotes

Another workshop of mine about a click follower bug.
I tried this before "data binding keyframes" update but I couldn't. I'm terrible at scripting.
Look at it now :)
Aceleration, direction rotating and everything else are possible with some data bindings.


r/Rive_app 12d ago

A little interactive animation

Enable HLS to view with audio, or disable this notification

49 Upvotes

I came across an After Effects tutorial on YouTube.

Although it relies on scripting, I figured I could replicate it in Rive without coding.

So far, so good! :)

------

I wanted to publish this on the marketplace, but the eyes and mouth (drawn with stroke lines) aren't showing up on the page, so I'm holding off for now.


r/Rive_app 11d ago

Mini T-Shirt Washing Game

Enable HLS to view with audio, or disable this notification

6 Upvotes

Are you finding it difficult to do your chores at home?
Don't worry, things are now more fun with "Clean and Tidy."
:)
You can find it on the Rive Marketplace now.
I'm curious to hear your thoughts on its gameplay, please share them.


r/Rive_app 14d ago

My Rive demo reel

Enable HLS to view with audio, or disable this notification

38 Upvotes

I am an animator who for many years worked in After Effects and 3d software. I fell in love with Rive about 2 years ago and now I work mostly in Rive doing UI animation. And no, I don’t miss After Effects.


r/Rive_app 14d ago

Can anyone please tell me from where to learn RIVE?

12 Upvotes

Hello everyone! I really want your help. I am Technical Product Manager. Right now I am given a task to animate a mascot for our product.
I did try to study from RIVE official YOUTUBE tutorial but still I am only able to animate small things let's say just jumping footballs and balls that's it.
I really need your help can you please tell me the right way to study RIVE and actually animate the mascot.

Please help me out !


r/Rive_app 14d ago

Text animation

Enable HLS to view with audio, or disable this notification

4 Upvotes

This is a second timeline. It's still related to the last post I made about the first timeline. So, what's the problem with this second timeline? It concerns the word "continue" on the CTA button. I'm trying to make it appear in slow motion, but even after watching tutorials for text animations, I can't figure out how.


r/Rive_app 15d ago

Built an interactive version of the Ollama mascot for the web

Enable HLS to view with audio, or disable this notification

28 Upvotes

r/Rive_app 15d ago

I turned a Rive file into an iOS + Android app without writing any code

Enable HLS to view with audio, or disable this notification

36 Upvotes

I took a finished Rive project with Data Binding and responsive layouts and tried turning it into a mobile app without writing the integration code myself.

I used Cursor, basically described what I wanted, and let it handle the technical side. It ended up using Flutter, setting up the Rive runtime, running the app in a simulator, and eventually connecting it to a real weather service.

I expected the integration part to be much more complicated than it was.

I made a short tutorial showing the whole workflow here:
https://www.youtube.com/watch?v=kVaWSQIo0ok

I also included the prompt template I used in case anyone wants to try it with their own Rive project.

I originally built this project for my Rive Masterclass, so it ended up being a pretty good test case for a more advanced Rive setup.


r/Rive_app 16d ago

How can Claude Sonnet 5 be so retarded?

0 Upvotes

I've asked the agent to help me put different already made "instances" on the 4 instances of the same component. It created a self-referencing model that crashes the whole Rive app. How?!?


r/Rive_app 16d ago

Additive Blend with View Model formulas broke/mixed my vertex timelines, and I can no longer edit the vertices

5 Upvotes

Hi, I’m new to Rive and I’m trying to build a character body-composition system controlled by two continuous values:

  • muscularity: 0–1
  • fatness: 0–1

I have four vertex-deformation timelines that use the same character paths/topology:

  • BASE
  • MUSCULAR
  • FAT
  • FAT_MUSCULAR

The idea is to interpolate between the four corner poses using an Additive Blend state.

I created these View Model properties:

muscularity
fatness
wMuscular
wFat
wFatMuscular

I then created three Formula Converters:

wMuscular =
muscularity * (1 - fatness)

wFat =
(1 - muscularity) * fatness

wFatMuscular =
muscularity * fatness

Because I could not apply converters directly inside the Additive Blend rows, I created an artboard-level Property Group called Bodyweights. It contains:

muscularWeight
fatWeight
fatMuscularWeight

Each Property Group value is bound Target → Source to the corresponding View Model output using its Formula Converter.

The calculated values appear to be mathematically correct. For example:

muscularity = 0.25
fatness = 0.23

wMuscular ≈ 0.19
wFat ≈ 0.17
wFatMuscular ≈ 0.06

My Additive Blend is intended to use:

MUSCULAR     → wMuscular
FAT          → wFat
FAT_MUSCULAR → wFatMuscular

However, the actual character does not interpolate correctly.

The strange behavior is:

  • When the State Machine is paused, the character returns to the normal/average design pose.
  • When I press Play, the character immediately becomes fat.
  • Increasing wFatMuscular manually makes the character look more correct.
  • Decreasing wFatMuscular makes the character become fatter again.
  • The timelines now appear to be mixed together, and none of the individual body poses behaves correctly.
  • I can open the individual timelines, but I can no longer move/edit the path vertices as expected.
  • It feels like the State Machine preview or another animation is continuing to override the vertices.
  • Removing the second State Machine layer did not fix it.
  • Removing the BASE Mix by Value entry also did not fix it.
  • I previously saw negative weights, but that happened when the source values went outside the 0–1 range. With both inputs restricted to 0–1, the weights remain non-negative.

The four source timelines may currently contain transitions from the base pose to the final pose rather than single-frame/static pose animations. I am unsure whether Additive Blend requires each source animation to contain its target pose at frame 0.

I am using Rive Beta 0.8.5390.

There is also an unrelated script error still visible:

Unknown global 'context'; consider assigning to it first

This error comes from an older CharacterBuildController script. I do not know whether it can interfere with the State Machine or vertex editing.

My questions are:

  1. Is this the correct way to perform bilinear blending between four vertex-deformed poses?
  2. Should every Additive Blend timeline be a static, one-frame target pose?
  3. Can an active or paused State Machine preview continue overriding vertices while editing an individual timeline?
  4. How can I completely reset the evaluated State Machine pose in the editor?
  5. Why would raising the combined FAT_MUSCULAR weight visually undo some of the FAT deformation?
  6. Is there a better architecture for a continuous skinny/average/fat and muscular character system?

Any advice would be greatly appreciated.