Modify Simulate::InjectNoise to set target of exponential decay to value from key_ctrl if a valid key is provided as input.

PiperOrigin-RevId: 813819040
Change-Id: I79508039b17fb3484b71ae0d19614c32adacfa10
This commit is contained in:
Taylor Howell
2025-10-01 10:45:26 -07:00
committed by Copybara-Service
parent edbdb5195c
commit 401bf431b8
3 changed files with 10 additions and 5 deletions
+6 -1
View File
@@ -2917,7 +2917,7 @@ void Simulate::AddToHistory() {
}
// inject Brownian noise
void Simulate::InjectNoise() {
void Simulate::InjectNoise(int key) {
// no noise, return
if (ctrl_noise_std <= 0) {
return;
@@ -2936,6 +2936,11 @@ void Simulate::InjectNoise() {
halfrange = 0.5 * (top - bottom); // scales noise
}
// overwrite midpoint with keyframe, if given
if (key >= 0) {
midpoint = m_->key_ctrl[key*m_->nu+i];
}
// exponential convergence to midpoint at ctrl_noise_rate
d_->ctrl[i] = rate * d_->ctrl[i] + (1-rate) * midpoint;