Driven video: key 1x to the clip end, zoom the timeline further out #407

Closed
opened 2026-10-11 14:29:26 +02:00 by meleki · 1 comment
Owner

Wunsch

Ein Video, das per Video clock: Driven der Animation folgt (#404), soll sich leicht in 1× abspielen lassen. Heute muss man dafür die Länge des Clips kennen und den End-Key selbst ausrechnen: Video 57,27 s, Animation 10 fps → Key auf Frame 572, Wert 57,2. Die letzten 0,07 s fallen dabei weg, das ist in Ordnung.

Dazu muss man bei langen Videos in der Timeline weit nach rechts scrollen, weil der Zoom bei 4 px pro Frame endet.

Plan

1× bis zum Ende des Clips

  • Neuer Eintrag im Rechtsklick-Menü der Timeline: „Video at 1× to its end from frame N“. Er gilt für die Zeile Video time unter dem Mauszeiger (sonst die gewählte Zeile).
  • Start = Playhead mit dem Wert, den die Zeile dort hat (leere Zeile: 0). Ende = der letzte ganze Frame vor dem Clip-Ende, Wert = Start + Frames / fps.
  • Der Start-Key wird linear, Keys dazwischen auf derselben Zeile fallen weg. Alles ist ein Undo-Schritt.
  • Welcher Clip: die Textur, die das Ziel am Playhead trägt (auch wenn texture in derselben Animation gekeyt ist).
  • Ausgegraut, wenn die Zeile relativ ist, das Ziel kein Video trägt, die Länge noch unbekannt ist oder der Start schon am Ende steht.
  • Ein Hinweis nennt danach Frame, Wert und die Länge des Clips.

Weiter herauszoomen

  • Untere Grenze der Zellbreite von 4 px auf 0,02 px pro Frame (1 h bei 30 fps ≈ 2160 px).
  • Die Frame-Zahlen am Lineal gehen in 1-2-5-Schritten beliebig weit (bisher Ende bei 1000).

Tests

  • Unit: Ende-Rechnung (Beispiel oben), Zoom-Grenze, Lineal-Schritte, Kommando (Keys dazwischen weg, Undo).
  • e2e 66: Rechtsklick → Menüpunkt → Keys stimmen mit der Länge des Testvideos.
## Wunsch Ein Video, das per `Video clock: Driven` der Animation folgt (#404), soll sich leicht in 1× abspielen lassen. Heute muss man dafür die Länge des Clips kennen und den End-Key selbst ausrechnen: Video 57,27 s, Animation 10 fps → Key auf Frame 572, Wert 57,2. Die letzten 0,07 s fallen dabei weg, das ist in Ordnung. Dazu muss man bei langen Videos in der Timeline weit nach rechts scrollen, weil der Zoom bei 4 px pro Frame endet. ## Plan ### 1× bis zum Ende des Clips - Neuer Eintrag im Rechtsklick-Menü der Timeline: **„Video at 1× to its end from frame N“**. Er gilt für die Zeile `Video time` unter dem Mauszeiger (sonst die gewählte Zeile). - Start = Playhead mit dem Wert, den die Zeile dort hat (leere Zeile: 0). Ende = der letzte ganze Frame vor dem Clip-Ende, Wert = Start + Frames / fps. - Der Start-Key wird linear, Keys dazwischen auf derselben Zeile fallen weg. Alles ist ein Undo-Schritt. - Welcher Clip: die Textur, die das Ziel am Playhead trägt (auch wenn `texture` in derselben Animation gekeyt ist). - Ausgegraut, wenn die Zeile relativ ist, das Ziel kein Video trägt, die Länge noch unbekannt ist oder der Start schon am Ende steht. - Ein Hinweis nennt danach Frame, Wert und die Länge des Clips. ### Weiter herauszoomen - Untere Grenze der Zellbreite von 4 px auf 0,02 px pro Frame (1 h bei 30 fps ≈ 2160 px). - Die Frame-Zahlen am Lineal gehen in 1-2-5-Schritten beliebig weit (bisher Ende bei 1000). ## Tests - Unit: Ende-Rechnung (Beispiel oben), Zoom-Grenze, Lineal-Schritte, Kommando (Keys dazwischen weg, Undo). - e2e 66: Rechtsklick → Menüpunkt → Keys stimmen mit der Länge des Testvideos.
admin added this to the Development project 2026-10-11 14:29:42 +02:00
admin moved this to Next in Development on 2026-10-11 14:29:43 +02:00
admin moved this to Done in Development on 2026-10-11 15:36:23 +02:00
admin moved this to Next in Development on 2026-10-11 17:13:01 +02:00
Author
Owner

Umgesetzt in 7742072, Wiki in b14b657 (Videos → „Following an animation“, Animations → Zoom).

So geht's

  1. Playhead auf den Frame, an dem das Video starten soll.
  2. Rechtsklick in die Zeile Video time → „Video at 1× to its end from frame N“.
  3. Der Editor setzt einen Start-Key am Playhead (Wert der Zeile dort, leere Zeile 0) und einen End-Key auf den letzten ganzen Frame vor dem Clip-Ende. Beispiel aus dem Wunsch: 57,27 s, 10 fps, ab Frame 0 → Frame 572 mit 57,2 s.

Was gebaut ist

  • Kommando in animationCommands.ts: Start-Key linear, Keys dazwischen auf derselben Zeile fallen weg, ein Undo-Schritt.
  • Welcher Clip: der, den das Sprite am Playhead trägt, auch wenn Texture in derselben Animation gekeyt ist.
  • Ausgegraut bei relativer Zeile, ohne Video, bei noch unbekannter Länge oder wenn der Playhead schon am Ende steht.
  • Hinweis danach, z. B. „frame 572 shows 57.2 s of 57.27 s“.
  • Zoom bis 50 Frames pro Pixel (bisher Schluss bei 4 px pro Frame). 1 h bei 30 fps passt auf rund 2200 px. Das Lineal zählt in 1-2-5-Schritten beliebig weit.

Tests

tsc, eslint, Prettier            → sauber
Unit video-clock + timeline-view → 27 Tests grün (8 neu)
e2e 66 (melektaus-atx)           → ALL PASSED, 23 Checks (66l neu)
Gate (melektaus-atx)             → CHECK EXIT 0, 297 Dateien, 4553 Tests
  • 66l klickt das echte Menü: ab Frame 5 mit 0,5 s endet das 2-s-Testvideo auf Frame 20 mit 2 s, der Key auf Frame 9 ist weg, Undo stellt den alten Stand her.
  • Gegenprobe: Lässt das Kommando die Keys dazwischen stehen, wird genau der Kommando-Test rot.
  • CI zu dd60a79 (der Push mit 7742072): Gate grün, im suite-Job ist nur 66k rot (Tempo-Messung, nicht dieser Menüpunkt). 66l war grün.

Nicht dabei

  • Ein Fit-Knopf für die Timeline. Vom Standard bis ganz raus sind es rund 44 Mausrad-Raster.
Umgesetzt in 7742072, Wiki in b14b657 (*Videos* → „Following an animation“, *Animations* → Zoom). ## So geht's 1. Playhead auf den Frame, an dem das Video starten soll. 2. **Rechtsklick in die Zeile `Video time`** → **„Video at 1× to its end from frame N“**. 3. Der Editor setzt einen Start-Key am Playhead (Wert der Zeile dort, leere Zeile 0) und einen End-Key auf den letzten ganzen Frame vor dem Clip-Ende. Beispiel aus dem Wunsch: 57,27 s, 10 fps, ab Frame 0 → **Frame 572 mit 57,2 s**. ## Was gebaut ist - **Kommando** in `animationCommands.ts`: Start-Key linear, Keys dazwischen auf derselben Zeile fallen weg, ein Undo-Schritt. - **Welcher Clip:** der, den das Sprite am Playhead trägt, auch wenn `Texture` in derselben Animation gekeyt ist. - **Ausgegraut** bei relativer Zeile, ohne Video, bei noch unbekannter Länge oder wenn der Playhead schon am Ende steht. - **Hinweis danach**, z. B. „frame 572 shows 57.2 s of 57.27 s“. - **Zoom** bis 50 Frames pro Pixel (bisher Schluss bei 4 px pro Frame). 1 h bei 30 fps passt auf rund 2200 px. Das Lineal zählt in 1-2-5-Schritten beliebig weit. ## Tests ``` tsc, eslint, Prettier → sauber Unit video-clock + timeline-view → 27 Tests grün (8 neu) e2e 66 (melektaus-atx) → ALL PASSED, 23 Checks (66l neu) Gate (melektaus-atx) → CHECK EXIT 0, 297 Dateien, 4553 Tests ``` - **66l** klickt das echte Menü: ab Frame 5 mit 0,5 s endet das 2-s-Testvideo auf Frame 20 mit 2 s, der Key auf Frame 9 ist weg, Undo stellt den alten Stand her. - **Gegenprobe:** Lässt das Kommando die Keys dazwischen stehen, wird genau der Kommando-Test rot. - **CI** zu dd60a79 (der Push mit 7742072): Gate grün, im `suite`-Job ist nur 66k rot (Tempo-Messung, nicht dieser Menüpunkt). 66l war grün. ## Nicht dabei - Ein **Fit**-Knopf für die Timeline. Vom Standard bis ganz raus sind es rund 44 Mausrad-Raster.
admin moved this to Done in Development on 2026-10-11 17:57:58 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#407