Is there a way to create a trigger event
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
Support Staff 2 Posted by cameron on 11 Nov, 2009 02:35 PM
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
3 Posted by mahalobay on 16 Nov, 2009 06:02 PM
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:
Support Staff 4 Posted by cameron on 16 Nov, 2009 07:34 PM
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.
Support Staff 5 Posted by cameron on 16 Nov, 2009 08:13 PM
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.