Hold a tracing photo steady, and switch it on where you would look
The photo blinked out for a frame or two and sometimes never arrived, from three causes that each present as the same bug. The still cache emptied itself on the frame it filled, so every still on screen had to be fetched and decoded again — every 48 frames of a scrub, and with two traced faces a permanent flicker, each one's still evicting the other's; it drops the least recently used now, a still being touched on every frame it is drawn. A still cannot decode in the animation frame that asks for it, and a face whose next one had not arrived drew nothing, so it now keeps the still it was showing until the new one is there. And nothing was read ahead, so continuous playback was always a frame behind its own footage; the next few frames' stills are asked for while the playhead is moving on its own, and only then, because a scrub asks for a different few at every step. Whether the footage shows is no longer the document's. It was an :underlay on an instance, inherited down the row path, nearest wins, and it went through edit — so showing a reference photo was an undo step that travelled to collaborators. It is [:ui :trace] now, the faces switched on and one opacity, like solo, and there is nothing left to inherit: a face is the same face wherever it is placed, so one switch covers every placement of it. The paint loop asks for its own redraw when that changes, since the resolver no longer does it for them. Opening a face shows its footage, because a symbol has measured footage behind it only because it was traced from that; a take does not, because a take is the picture. The switch is on the bar above the stage, with the tone and the tool, and on each face's timeline row beside solo — not a section that appeared once the right row had been found. A face open in its own tab could not show its footage at all before, shown having walked instances, and that is the one place tracing matters most. The inspector keeps the face's own keyed facts, its trace keys and its origin, and says why it cannot key a frame rather than greying out the only button in the section. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ae03b61dca
commit
ed88c5e674
13 changed files with 402 additions and 156 deletions
|
|
@ -435,6 +435,9 @@ button.share-button:hover, button.share-button.on { filter: brightness(1.1); }
|
|||
.tab:hover .close, .tab.on .close { visibility: visible; }
|
||||
.tab .close:hover { background: var(--hair); color: var(--fg); }
|
||||
|
||||
.trace-opacity { width: 64px; }
|
||||
.palette-bar label.dim { display: inline-flex; align-items: center; gap: 2px; white-space: nowrap; }
|
||||
|
||||
.palette-bar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -650,10 +653,10 @@ button.share-button:hover, button.share-button.on { filter: brightness(1.1); }
|
|||
.tl-twist:disabled { opacity: 0; cursor: default; }
|
||||
.tl-delete { margin-left: auto; padding: 0 4px; border: 0; background: none; color: var(--dim); }
|
||||
.tl-delete:hover { color: var(--fg); }
|
||||
.tl-solo { margin-left: auto; padding: 0 4px; border: 0; background: none; color: var(--dim); font-size: 10px; }
|
||||
.tl-solo:hover { color: var(--fg); }
|
||||
.tl-solo.on { color: var(--sel); font-weight: 600; }
|
||||
.tl-solo + .tl-delete { margin-left: 0; }
|
||||
.tl-solo, .tl-trace { margin-left: auto; padding: 0 4px; border: 0; background: none; color: var(--dim); font-size: 10px; }
|
||||
.tl-solo:hover, .tl-trace:hover { color: var(--fg); }
|
||||
.tl-solo.on, .tl-trace.on { color: var(--sel); font-weight: 600; }
|
||||
.tl-solo + .tl-delete, .tl-trace + .tl-solo { margin-left: 0; }
|
||||
|
||||
/* The ruler and the corner above the labels stay at the top of the body while
|
||||
the rows scroll under them: the ruler is the scrubber, and scrolling down to
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue