TVPaint: Fix 'repeat' behavior (#5412)

* adde frame start to repreat frame matching

* removed "loop" from behaviors
This commit is contained in:
Jakub Trllo 2023-08-11 14:50:05 +02:00 committed by GitHub
parent 8d96e42ff7
commit 80114b24fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 6 deletions

View file

@ -233,7 +233,7 @@ def get_layers_pre_post_behavior(layer_ids, communicator=None):
Pre and Post behaviors is enumerator of possible values:
- "none"
- "repeat" / "loop"
- "repeat"
- "pingpong"
- "hold"
@ -242,7 +242,7 @@ def get_layers_pre_post_behavior(layer_ids, communicator=None):
{
0: {
"pre": "none",
"post": "loop"
"post": "repeat"
}
}
```

View file

@ -77,13 +77,15 @@ def _calculate_pre_behavior_copy(
for frame_idx in range(range_start, layer_frame_start):
output_idx_by_frame_idx[frame_idx] = first_exposure_frame
elif pre_beh in ("loop", "repeat"):
elif pre_beh == "repeat":
# Loop backwards from last frame of layer
for frame_idx in reversed(range(range_start, layer_frame_start)):
eq_frame_idx_offset = (
(layer_frame_end - frame_idx) % frame_count
)
eq_frame_idx = layer_frame_end - eq_frame_idx_offset
eq_frame_idx = layer_frame_start + (
layer_frame_end - eq_frame_idx_offset
)
output_idx_by_frame_idx[frame_idx] = eq_frame_idx
elif pre_beh == "pingpong":
@ -139,10 +141,10 @@ def _calculate_post_behavior_copy(
for frame_idx in range(layer_frame_end + 1, range_end + 1):
output_idx_by_frame_idx[frame_idx] = last_exposure_frame
elif post_beh in ("loop", "repeat"):
elif post_beh == "repeat":
# Loop backwards from last frame of layer
for frame_idx in range(layer_frame_end + 1, range_end + 1):
eq_frame_idx = frame_idx % frame_count
eq_frame_idx = layer_frame_start + (frame_idx % frame_count)
output_idx_by_frame_idx[frame_idx] = eq_frame_idx
elif post_beh == "pingpong":