Is there a way to create a trigger event

mahalobay's Avatar

mahalobay

10 Nov, 2009 06:40 PM via web

Hi Cameron,
Am finally getting around to setting up post on our project and putting stuff shotrunner for tracking. Was curious if there was a way to set up dependent tasks or trigger events so that we can set up entire hierarchies of tasks? ie

Final color grading task depends on the completion of compositing task which depends on FX particles setup task.

I am currently setting all the final color grading tasks to Pending but would like for them to automatically switch to active upon the completion of a trigger event, ie Final Compositing is marked as completed or approved.

Alan

  1. Support Staff 2 Posted by cameron on 11 Nov, 2009 02:35 PM

    cameron's Avatar

    Hi Alan,

    At one point, over a year ago, tasks could be linked together and also
    assigned to more than one person. But this proved so complex that
    nobody could understand it and no one wanted to spend the time to set
    all the dependencies up. (Today, most users don't even want to be
    bothered to set up compositing elements and tasks!) I think the
    problem was that setting this up on a shot-by-shot basis is just too
    much work.

    So, I've thought a lot about how to setup a project pipeline, so that
    you could say that on a given project, the flow goes like this:

    Layout -> roto/key/track -> rough comp -> final comp -> color grading -
     > final audio

    Or whatever your process is for that project. Now this all sounds fine
    until you get into the details:

    1. The pipeline stages are not always sequential. Its possible to have
    multiple pre-comp tasks going on at the same time (roto, keying,
    motion tracking, etc.)

    2. Need to sync up an appropriate shot status with where we are in the
    pipeline.

    3. Certain things like color grading and final audio are typically
    done on the finished piece or per-sequence, not shot by shot.

    4. Can every shot be different? Or do we enforce a standard sequence
    of tasks across the project? How do we manage that? How do we set this
    up so that it is not a total nightmare to manage?

    About this point my head begins to explode.

    What we could experiment with, though, fairly easily, is using the
    Python API to sweep through and flip statuses and other things based
    on some set of rules. For example, (and this one is actually already
    in the product) when you complete a shot, go through and close out all
    the subordinate tasks on that shot. If you have some ideas as to what
    you would like to see happen, I'd be happy to help you get that set up.

    For particle renders, I'd encourage you to set up a element on a shot.
    It could be that when all the compositing elements are final, that we
    could flip the shot status to 'Comping Rough' and create a new
    compositing task with a 2 week deadline -- or look for an existing
    compositing task on the shot and change its status to 'Ready' or
    something?

    Let me know your thoughts.

    Cheers,
    Cameron

  2. 3 Posted by mahalobay on 16 Nov, 2009 06:02 PM

    mahalobay's Avatar

    Hey Cameron,

    I can't go too much into specifics for NDA reasons, but most of the
    large-facility asset/pipeline tracking systems have solved the questions you
    raise in the following way:

    > 1. The pipeline stages are not always sequential.
    As programmers and pipeline builders we tend to overthink the structure,
    which is good and necessary. However, mass scale shot production requires a
    more freeform approach. The key to this is that each stage, regardless of
    where it fits in the pipeline, requires some form of assets. Those assets
    are generated SOMEWHERE, either on stage as plate elements, or
    datasets/scenes/mattes/rotos that are generated by another
    task/process/dept. In order for a given task to happen, it must have those
    assets. The trigger for any given task, then, is simply to say Task X can
    only be worked on when Task Y and Task Z are complete (ie have generated
    needed assets for Task X). Feedback loops (ie Task X has to be tested to
    confirm that a previous Task Y is actually complete) are handled with an
    additional completion flag - ie the artist can mark Task Y as done,
    triggering Task X. Once we run a first pass of Task X and confirm that the
    assets are working correctly, a Supervisor can go in and upgrade Task Y from
    Done to Complete, or however you want to choose the terminology)

    In this way we can allow for the person managing the database to actually
    design the workflow on the tracker and then track its progress as the shot
    winds its way through multiple tasks. The granularity of the tasks is then
    left up to the project manager - they can choose to only specify the major
    tasks, or if they so choose, create an entire tree of 50 subtasks that all
    lead to the same finaled shot

    2. Need to sync up an appropriate shot status with where we are in the
    pipeline.

    see above. Also note that in our systems we have the capability to unset a
    task - ie if Task Y is already Done but something doesn't work later on in
    the pipeline, or the director changes his mind, we can revert Task Y's done
    status back to In Progress and request modifications to the task.

    3. Certain things like color grading and final audio are typically
    done on the finished piece or per-sequence, not shot by shot.

    You might consider setting up the sequence part of your database so that it
    can accept Tasks so that it can act as a 'master shot' for each sequence, or
    we can build an additional shot under the sequence listed as 'Seq.000' that
    can serve for assigning of tasks based on the sequence.

    4. Can every shot be different? Or do we enforce a standard sequence
    of tasks across the project? How do we manage that? How do we set this
    up so that it is not a total nightmare to manage?

    See (i) - let the project manager decide how much or how little they want to
    do in the tracker. You can't manage all their projects for them, you can
    only give them the tools to do what they need to do :)

    AC

    On Wed, Nov 11, 2009 at 7:35 AM, cameron <
    tender+db0d8ec98856be998085e666b526273fc6cb4afa7@tenderapp.com<tender%2Bdb0d8ec98856be998085e666b526273fc6cb4afa7@tenderapp.com>
    > wrote:

  3. Support Staff 4 Posted by cameron on 16 Nov, 2009 07:34 PM

    cameron's Avatar

    Hi Alan,

    Thanks for the in-depth response and all of the detailed information. I have a follow up question:

    Aside from compositing needing all the elements, are there other examples of dependent tasks you can think of? In other words, rather than building task dependencies, would it be sufficient to use elements and element statuses to know when compositing can proceed?

    I notice that's how I naturally seem to work when left to my own devices: I look for all the required elements to "go green" on a shot to know that I can start compositing, and I use tasks to assign all the little things that need to happen to get the elements whipped into shape.

    I've even been wondering (and I hope you'll indulge me here) if most tasks in the system aren't redundant. For example, I see a lot of shot tasks like: "Roto Car", or "3D Track", and I'm thinking that a roto matte or camera solve should be an element. And, on a small project, tasks might be completely unnecessary -- if a shot needs Roto, you know what to do! Tasks seem to help on larger projects where you have to coordinate people.

    What do you think of when presented with "Tasks" and "Elements"?

    So, we could try a couple of things out and see how they work. Both would involve using the API (which I can help you with) to test out the behavior:

    1) Add better element status codes, simplify the shot status codes, and write a Python API routine to go through and automatically set shot status based on elements being completed. We might need a better report/view to show shots/elements (something close to the card layout.) I think this option would be better for productions with a small number of users. This could be done quickly (its mostly configuration.)

    2) Add the ability to specify dependencies on tasks, add email notifications when tasks go from 'Pending' to 'Ready' or 'Working', and code some API routines to automatically flip element and shot statuses when appropriate. This will take longer to do, but I'm certainly game to try it out.

    Let me know if either of these seem like a good direction to move in, or if you want to try something different. I've attached a set of shot and element statuses that might work out.

    Regarding sequences, yes, they can currently accept tasks for things like color correction.

  4. Support Staff 5 Posted by cameron on 16 Nov, 2009 08:13 PM

    cameron's Avatar

    This is probably more than you want/need, but here is some advise I gave another user:

    "There are two schools of thought on using Elements vs. Tasks:

    The “simple way”, is to just ignore elements, and create tasks for all the shot dependencies like roto, CG, artwork, etc. You can see where a shot is at by looking at the tasks.

    The “as designed way” is to create elements for each compositing dependency (plates, rendered CG, roto mattes, tracking solutions, etc.) and only create tasks when needed to assign work on the details. With this model, when the status of all the elements “goes green” we know we can start compositing. Additionally, we can link an Asset (like a 3D model) to multiple shots via the Element. Elements also give you a place to put your RED plate data (frame ranges, file names). We could make an API routine that could scan all the elements, and set the status on shots that appear ready for comping. This method is more work, but can give you more data.

Reply to this discussion

Internal reply

Formatting help or Preview

Attached Files

You can attach files up to 10MB

What comes next? 'Monday Tuesday Wednesday ?????'

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.