bevyengine / bevyengine/bevy

`animate_targets` should allow total blend weights greater than 1

Open
#13,661 0 comments 1 reaction 0 assignees View on GitHub
A-Animation C-Feature S-Needs-Design
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 16h
Merged PRs (30d)
171

Description

## What problem does this solve or what need does it fill?

A common technique in video game animation is additive animation clips. These clips contain relative transformations compared to a base pose or animation, such that summing them (via the relevant blending) results in a different animation.

The current implementation of `animate_targets` normalises all weights so that they add to 1. This prevents this kind of playback.

## What solution would you like?

Blend weights should not be normalised. Alternatively, normalisation could be enabled with a marker component (however, given that at the moment weights need to be driven by user code, it'll usually be more efficient for users to do this as they will have the context).

## What alternative(s) have you considered?

An additional mode specifically for additive animations could be written.

This would avoid the potential foot-gun of setting weights and expecting a 'pirate shares' style weighting, however would require another code-path that works identically except for the normalisation, and people might still be surprised that it _does_ clamp.

Contributor guide

Open the contributing guide

Research direction

Locate the `animate_targets` implementation and its existing animation or blending tests; start by tracing where blend weights are normalized. Verify the behavior with weights whose total exceeds 1, and consider the issue's additive-animation example the expected outcome: weights are applied without automatic normalization.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
game-dev
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.