Skip to content

v1.27.0

Latest

Choose a tag to compare

@abrahamADSK abrahamADSK released this 16 Aug 14:15
  • The conformed clip keeps its SOURCE version current (Chat 99, measured
    in-vivo — the fix for a full day of 'no media' on the timeline): Flame read
    the very same .clip as start_frame=1001 when the light version was
    current and as start_frame=0, spanning 1101 frames, when the comp version
    was. With the comp current, every Update Sources — which performs a
    replace — anchored the conformed segment at 00:00:00:00 and lost its
    cut. The asymmetry is what cost the time: Update Sources BREAKS the
    anchor against a badly-read clip and does not restore it against a good
    one (verified across all three version_selection_mode values), so a
    damaged segment must be re-laid with PySequence.overwrite. New
    keep_source_current marks the first (source) version current instead of
    the newest; the comp version is still in the clip and the operator flips to
    it natively, which is the intended gesture. Nothing is written to the
    timeline. Validated end to end: re-conform → update_sources() → flip to
    comp → flip back, anchor 00:00:40:01 throughout.

  • Spliced feeds inherit the source feed's anchor DESCRIPTION, not just its
    ticks
    : the two feeds already agreed on nbTicks 1001 and the clip still
    resolved to 0, because they disagreed about how that timecode is expressed
    — Maya's EXRs carry no timecode (TimecodeSource=Filename, empty rate, no
    sampleRate) while Flame's Write File embeds one (Header, explicit
    rate). startTimecode/rate, sampleRate and the TimecodeSource /
    RateSource userData entries are now copied from the source feed, ALWAYS —
    the previous early-return skipped it whenever the ticks matched. Pixel
    metadata (channels, layers, colour space) is deliberately left alone. This
    alone did NOT fix the start-frame reading; it is kept because leaving the
    feeds inconsistent about their own anchor is a latent trap. +7 tests.

  • openclip_create can splice in publishes selected by TYPE, with no Task
    (Chat 99): Flame's own tk-flame batch-render integration publishes the comp
    as Flame Render and links no Task — its context comes from the
    .batch path, whose template carries no {Step} token. Every existing
    selector is Task-based, so the conformed clip never learned the comp
    existed and Update Sources had nothing to offer. New optional
    extra_publish_types (e.g. ['Flame Render']) adds one version group per
    type, matched on the Shot alone, appended AFTER the Task-selected groups so
    the comp lands on top and becomes current. The uid token is read from the
    publish code (SEQ003_SH001_CMP_v001.%04d.exrCMP_v001) rather than
    from the type name, so the clip reads LIGHT_v003 + CMP_v001. A type
    with no publishes yet is reported in skipped, never fatal — the clip is
    valid before the first comp render. Still explicit by design: the tool does
    not guess which publishes feed a conform. +5 tests.

  • Spliced versions inherit the SOURCE version's start-timecode anchor
    (Chat 99, in-vivo 'no media' on the timeline flip): a conformed segment
    lines its versions up by TIMECODE, and the two writers disagree — Maya's
    EXRs carry no timeCode attribute so dl_get_media_info falls back to
    the frame number (LIGHT feed nbTicks 1001), while Flame's Write File
    embeds a real one and a batch whose source timecode was never set stamps
    00:00:00:00 (COMP feed nbTicks 0). Same frame numbering, same
    duration, correct paths — and the flip still showed 'no media', because
    the segment asked for TC 1001-1100 against a feed spanning TC 0-99. The
    pipeline owns the clip, so splice_openclips now pulls every later
    feed's nbTicks/dropMode onto the first (source) version's, per track,
    and openclip_create REPORTS it in a new timecode_realigned field —
    never a silent metadata rewrite. startFrame is deliberately NOT
    normalised: it must keep matching the real filenames in <path>, and
    numbering parity is enforced upstream at render time. +6 tests.

  • openclip_create multi-step aggregation (Chat 98 comp architecture,
    operator-approved): new optional steps list splices publishes from
    SEVERAL Steps into ONE clip, in list order — ['Light', 'Comp'] gives
    the conform timeline the LGT render and every comp version through the
    same open clip, flipping natively via Source Versions. Version uids are
    disambiguated with the step string uppercased (LIGHT_v003,
    COMP_v001); current = the newest version of the LAST listed step with
    publishes; a listed step with no publishes yet is reported, never an
    error (the clip is valid before the first comp render). Proven necessary
    in-vivo: Flame's Write File OWNS any clip it creates — it overwrote the
    pipeline clip wholesale (43 KB multichannel → 2.4 KB, versions gone), so
    the pipeline aggregates and the Write File is demoted to media-only.
    Single-step behaviour unchanged (plain vNNN uids). +3 tests.