Showing posts with label pipeline. Show all posts
Showing posts with label pipeline. Show all posts

Thursday, November 17, 2022

Pipeline Movies

The pipeline is always with us. Even if we don't think about it, because it is different from studio to studio, it is exciting to see how they deal with it.

Old but gold (actually, Rhythm & Hues no longer exists, which is the most depressing story of all time in the industry).

Rhythm & Hues - A Framework for Global Visual Effects Production Pipelines - SIGGRAPH 2014 from Murali Anagani on Vimeo.


Since the ShotGun Software has been renamed to ShotGrid, which is a more PC name for a production tracking system :)

Tony Barbieri and Don Parker; The Shotgun Pipeline at PSYOP from Autodesk Media and Entertainment on Vimeo.


The best pipeline presentation(s) of all time (still ancient which is a bit of a sign that nowadays there are less intersting talk on that field).


Not soo long time ago there was a discussion hosted by Side Effects Software at Siggraph.


Or I'm just getting old and only have good memories from the far past—cinesite's presentation about generalizing pipeline and implementing fTrack.



Last but not least: if we are talking about the pipeline, it's unavoidable to talk about Katana. The exciting part is that people may think that Katana is a lighting & rendering tool. Actually, it is a pipeline tool because of the nature of rendering. If you want to render anything, you must create a complex system to flow the data from DCCs (digital content creation tools) to the render engine. That's where Katana comes in. So here is a brilliant presentation about Katana deployment.


Saturday, December 7, 2019

SideFX Procedural Dependency Graph

I think it is huge! 
I try to imagine how it will affect on the VFX intustry. I have to look closer, but I think it is a step toward a procedural pipeline and task management which is basically project-asset management from a bird's eye view.


All the details are here:
Side FX PDG

(updated on 2023-06-20 the link was broken so it turned out that PDG is now under Houdini which soft of a admission of that PDG is not software agnostic solution sadly)

Thursday, October 24, 2019

Universal Scene Description - Moving to the Next Level

It is reminiscent to this music:

So USD (Universal Scene Description) has been announced long long time ago. I wrote about it 2016. Major studios pleased to Pixar that they open-sourced their technology.
I thought during that time it could standardize pipelines some level. Because the main pipeline issue is always that how to transfer/share data from one process/software to another.

Now (4 years later) it seems the topic starting to be HOT. Software development companies like Autodesk and Side Effects Software step further to make available USD for users / companies which can't afford a big investment into pipeline development.

Side Effects Software


Autodesk

Universal Scene Description: Open Source at Autodesk from Autodesk Media and Entertainment on Vimeo.

The Foundry

Blender

Tuesday, February 13, 2018

Cloud VFX/CG Studio only for you

The was the major 3D stereo hype around 2010. The recent years was about VR hype based on my experience.


But there is another sign of "revolution". I tend to call it Cloud VFX Studio. There are more and more VFX/CG solutions are available online (for rent). They offer not just the softwares or tools, but also offer their pipeline and project management stuff.

Some of these cloud stuff I've encountered during the past years:

Nimble Collective
is a cloud animation platform as you can read on their site. One of the key member of the crew is Jason Schleifer who was (is) one of the greatest Maya guy ever. He recently started to use Blender because everybody who has some kind of cleverness :) recognize Blender sooner or later.

Clara IO
is an online free! 3D creation package which is developed by the Exocortex team. I don't know and see anybody who used their tool but there are bunch of tutorials on the net.

Metapipe
One of my best collegue called my attantion to Metapipe. They offer complete VFX pipeline on the cloud. Contemporary prome video: happy music, motion-graphics, what else do you need?



Elara
is a scalable VFX pipeline using the elastic power of the cloud - as they said. I watched their webinar. I looks promising, but there is no website so it hasn't lanched yet I guess.



Thursday, January 4, 2018

Heading toward a standard VFX pipeline - MaterialX

So as I discussed earlier open-source solutions in the VFX/CGI industry have huge impact. We can think of the OpenEXR or the Alembic formats for example.

Pixar's USD was a new level of the open sourced technologies beacause basically we can adopt a high profile pipeline solution originally developed one of the biggest 3D animation studio of the Globe.

MaterialX could be another milestone of the VFX/CGI industry however it is not clear for me how it will evolve. Quote from their description:
"MaterialX provides a schema for describing material networks, shader parameters, texture and material assignments, and color-space associations in a precise, application-independent, and customizable way."

If we look at USD in production viewpoint it is rather a tool for the 3D layout (whatever it means) and of course it is in connection with modelling, animation, fx. So it basically deals with geometries (maybe volumes as well) in a software agnostic way.

But MaterialX propesed to be a standard for look-development data transfer. So it should mean 2D (like textures) and 3D (materials/shaders) type of data in render engine agnostic way. If we think about in a long term it could means every rendering soultion would understand MaterialX data...we will see.

MaterialX was used on the feature film Star Wars Rogue one for example.


Friday, March 10, 2017

Fabric Engine - GPU - MPC

It is a presentation from 2015 but still shocking how revolutionary what MPC developed "hand-in-hand" with Fabric Engine.


The background story is here.

Thursday, November 24, 2016

Maya Tips & Tricks - Using directories outside of the maya project stucture (relative path)

One of the main purpose to use Maya project structure to have the ability to reference directories locally. That means the project can be relocated. Let's say we have the Maya project root folder:

r:/Projects/201401_OBP/shotProd/010/maya

So the Maya default project structure look like this:



Beside the folders there is the workspace.mel file which describes the file rules within that Maya projects. In practice that means if you have Maya running and set this project (File menu / Set Project...) and you hit the Open Scene... from the File menu the file browser pops up pointing to directory below:

r:/Projects/201401_OBP/shotProd/010/maya/scenes

The workspace.mel file contains a mel command to address the file rule for Maya scene files:

workspace -fr "scene" "scenes";

More precisely there are two more file rule because of the maya scene file extensions. One for the .mb and one for the .ma extension:

workspace -fr "mayaAscii" "scenes";
workspace -fr "mayaBinary" "scenes";

The absolute scenes path is generated like this based on the current file rule:

project root  + /scenes

So Maya referencing the scenes directory below the Maya project root folder. Since than it does not matter where the Maya project is in the directory structure because inside the project it will be always valid.
But in studio scenario we can pretend that for eg. the Maya renders should be elsewhere than below the maya project as the default file rule describe it:

workspace -fr "images" "images";

Without any adjustment if we want to render an image it will look like this on Maya render settings panel:


As before the absolute scenes path generated like this based on the current file rule:

project root  + /images (the file name is the scene name by default.)


So as mentioned before usually we want to use an external directory to output the renders so the compositors don't have to look up it inside a Maya project but a directory with more general purpose. So the render (images) directory should be something like this:

r:/Projects/201401_OBP/shotProd/010/elements

We can avoid to use that absolute path. Maya can use relative path as a file rule. Just have to use the "../" syntax. It tells to Maya to go one directory up relative to the root folder. My super cool explanation picture:




To reference the elements directory the file rule will look like this:

 workspace -fr "images" "../elements";

My experience is that if I directly edit the workspacel.mel file maya only recognize that change after a restart. To edit the file rule via Project Window from the File menu it works fine.

Using relative paths means your project relocatable but the maya project itself depends on the outside directory structure.

Further reading.

Wednesday, September 28, 2016

Naming Convention 3. - Files and Folders 2.

To continue the previous chapter the starting point is the following stucture (I removed postprod folder explained later):

201401_OBP/
    010_IN/
    020_PREPROD/
    030_PROD/

    040_OUT/

When we start to create directory structure we are about to define the pipeline as well. By doing that we define concepts and create rules. Let's think about folders as a sets. We have a lot of things in the VFX production and we analyze those to define what is what. Does the particular item fit into that set or not? For example: is the current 3D model an asset or a shot. The answer is quite clear. Is that model a preprod(uction) or prod(uction) model? Not sure. To make it clear we have to create a rule like the following: there is no preprod model because preproducion is only a step its creation process ( for eg.: version 003 is more like preprod asset but version 008 is hires production model).

So right now we have to define a couple of concepts, pre-production (preprod), production, asset and shot produciton.

Pre-production
Less managed workflows like concept art, previz, animatics, storyboard. In VFX production it is usually before the shooting so it means there are no shots. Actually if we make previz or animatics we create shots but they can't be the production shots (except for full CG shots - see below).

Production
It is important to note that in VFX Point Of View there is no post-production. The whole film making process of course has post-production process. But if we use prod and post-prod folder one of them is kind of a meaningless. I hope it is not confusing.
So in my definition production for VFX is the process on the shots created by principal photography.

Asset production
Asset is a general concept in VFX. There is the concept asset production. Basically it means we create things which can be used in multiple shots, or we produce things shot independently.
Usually we are talking about sets like: characters, sets, enviroments, props.
 

Shot production
Shot is a general noun in the film industry. In a context of VFX shot production means obviously the creation of the VFX shots for the film. It can be divided to VFX shots, full CG shots and so called post FX shots (usually simple 2D effects like translate or rotate the image).

For shot production
Pre-producion can be defined like this: if we working on shots before we get shots created by principal photography it has to be the pre-production.

So asset and shot production basically a production and should below the 030_PROD folder.

201401_OBP/
    010_IN/
    020_PREPROD/
    030_PROD/
        ASSETPROD
        SHOTPROD
    040_OUT/

But can be simpler like this (to avoid deeper folder structure):

201401_OBP/
    010_IN/
    020_PREPROD/
    030_ASSETPROD
    040_SHOTPROD
    050_OUT/

You may ask: what is the logic behind using capital letters. And the answer is: fashion. There is no reason for that. So it should look like this using camelCase:

201401_OBP/
    010_in/
    020_preProd/
    030_assetProd
    040_shotProd
    050_out/


To be continued...


Wednesday, June 8, 2016

Pixar's Universal Scene Description (USD) - Generalization of Pipelines

It is time to write about it because it seems we can have it soon. Pixar Animation Studio announced its intent to release its Universal Scene Description software (USD) as an open-source project by summer 2016.



So what is USD and what we can except if it will be used by VFX/CG studios all over the world. My opinion is that there is shift in the industry which leads to the generalization of pipelines and open-source technologies have key role in it.

Commonplace is that: every pipeline is different. It might be true but the end of the day studios, managers, supervisors, artists are facing the same or very similar issues day by day. There is the need to be more efficient and the CG/VFX pipeline is more and more in focus. But there are no off-the-shelf products so every studio has to develop in-house technologies and tools to manage their work. Usually the main driving forces of the development are the projects which are generates a lot of practices (how to name things for eg.). Ideally these practises are evaluated after and before the projects and could be implemented into the pipeline. So the pipeline evolves but this evolutions is rather some thing like agile software development which is works fine for a short term. In long term the pipeline development is based on the legacy of previous works and that is why every pipeline can be different.

But we can get to the point where the pipeline won't let us to be more efficient because of the legacy. For example it won't let us (or it would be too expensive) to implement new technologies, solve bottlenecks. And that is the time when the pipeline should be re-evaluated as a whole. The process is the generalization of the problems we face day by day. On a long term (might be decades) it has to result that studio pipelines are getting more and more similar. Of course there are new technologies, hardwares and the softwares which can distract the generalization process. That is why I think open-source technologies have key role in that, because the CG/VFX community can work together on the so called "best practise".

Universal Scene Description is a promise to generalize the way we build up 3D scenes and share between different (most likely 3D) softwares like Maya, Houdini, Katana, etc. They are on their way: as the FAQ says linux version can be downloaded and windows implementation is coming soon. Extended documentation and tutorials are also there.

Wednesday, September 30, 2015

Autodesk Vision Series 2015

I think it is time to relax and let Autodesk be our entertainer. Okay, you might think I`m biased (or paid by Autodesk which is not the case unfortunately) I spend  most of my time using Maya. Of course I`m biased. I wish I had more time to do cool stuff with other softwares like Modo, Houdini, ZBrush, Dynamo, Krita and learn more about  Blender, Substance Painter and DesignerPhotoshop, AfterEffects, Photoscan, PFTrack, FinalCut, Flix, Mari, Nuke, Hiero, Katana, Arnold, Renderman, OpenColorIO, ShotGun, Tactic, fTrack, USD, OSL, MU, Python, C++, JavaScript, never ending story...

Anyway, just relax and watch these videos:

Virtual production


Rendering and the cloud


The topic is Procedural Content Creation and the software is 3DS Max. I have to admit it is a bit disappointing for me because we waiting soo long ago a system like that in Maya. Okay, there is SOuP so Autodesk bosses think we don`t need proceduralism any more because we already have it.



And last but not least: Editorial



Friday, January 23, 2015

Naming Convention 4. - Numbers

We use numbers to count things. Avoid to use numbers on distinguish things.
Typical example to count versions like:
v001
v002
...
But not the best practice to distinguish different things like:
Tree_01
Tree_02
I usually use letters to distinguish variations.
Tree_A
Tree_B
...
Tree_Z
Using one letter can refer to 26 variations. We can extend it with double letters like:
Tree_AA
Tree_AB
...
We can combine variation with counter like this:
Tree_A_01
Tree_A_02
Tree_B_01
Tree_A_02
...

Anyway, this topic is about using numbers. We are talking about CG and VFX (as TidyVFX is about that) but this knowledge is important for the whole universe of course :)

To establish a naming convention means we have to specify for what to use numbers.

1. Count things
As I wrote above

2. Arrange things
For files and folders usually have to use numbers to specify a certain order because file systems use alphabetical order by default. For eg. if we have IN, OUT, PROD it would look like this in the file system:


But if you want a certain order you have to use numbers like this:




2.1 Padding series
Because of the file systems another thing to deal with is the padding. It is quite simple.
One character can produce ordered sequence from 1 to 9, two character from 1 to 99, etc.
For image sequences in VFX we usually use 4 digits and that means correct order 1 to 9999.
Also have to mention never start a sequence from 1 because it is a big issue when we have to extent it with 80 frame at the beginning for some reason. It would start from -80 and we really don't want that.

2.2 Padding shots (insert shots)
There is another function of padding in shot numbers for eg. We have to consider there could be new/extra shots during the production. So if we use 001, 002, 003, we can't insert a shot between 001 and 002. We have to extend the name with zeros. Same rule. If we use one character that means we can insert 9 extra shot.
So the shot numbers should be like this:
0010
0020
0030
The rule for inserting extra shots is to halving the numbers. To insert shot between 0010 and 0020 would be 0015. To insert a shot between 0010 and 0015 would be 0013 (or 0012).
I would not recommend to use 001A, 001B for shot names.

Sunday, December 28, 2014

Naming Convention 3. - Files and Folders 1.

Let's pretend we have a project. A good starting point is to count how many things we have to deal with during a project. Obviously it could be tons of files and data. There are a lot of ways to deal with them but eternal question is "what is what?". So we have something and we have to give a name for that. Considering this we have to define what this something is. What is the reason for this something? For what we are going to use it? Etc.
To answer these questions we have to have a look at our project. That something can be an image file of a concept art or a 3d model or it can be a feedback that our client sent us.
Of course every project is different so we can only talk about it in general. This blog is about VFX-CG so I try to collect ideas about that kind of projects.

First of all we know there are inputs and outputs.
Inputs can be any kind of material which is not created during the project in-house.
Outputs can be any kind of material which is sent to the client, co-workers, off-site studios, etc.

If we are talking about folder structure it starts like this:

IN
OUT

One step back. There should be a solution to identify projects (or shows).
Date is a simple organizer with a project ID.

Definition:
[yyyy][counter][separator][ProjectID]
[yyyy] - year like 2014
[counter] - two digit like 01
[separator] - underscore
[ProjectID] - abbreviated name of the project - exactly 3 capital letters like OBP

For eg.:
201401_OBP (Obviously Basic Project)

So we have:

201401_OBP/
   IN/
   OUT/

Of course we shoud have something called production. We can extend that concept with pre-production and/or post-production.

That is the (first) point where we have to consider importance or priority because we have options to organize the folder hierarchy and there is no ultimate solution as I wrote before. One really important thing is to try to avoid redundancy. For example we can arrange folders like this:

201401_OBP/
    IN/
    PRODUCTION/
        PREPROD/
        PROD/
        POSTPROD/
    OUT/

As you can see PRODUCTION or PROD basically the same but there are two folders with almost the same name. So we can avoid that like this:

201401_OBP/
    IN/
    PREPROD/
    POSTPROD/
    PROD/
    OUT/

Usually this is also called flat vs deep directory stucture.

A typical file system arranges folders like above therefore we should use numbers to add a precise order of the folders like this:

201401_OBP/
    010_IN/
    020_PREPROD/
    030_PROD/
    040_POSTPROD/
    050_OUT/

About using numbers you can read this: Naming Convention 4. - Numbers

To be continued...

Thursday, November 20, 2014

Autodesk acquired Shotgun

Okay, it is not recenty news but for me it is because I do an extensive research on asset and project managment topic.
I found this a couple of month ago: Redcurrant. It is in connection with the Goosbery Project as I wrote before. As the open source community push forward the industry (not just CGI and VFX) it could be a viable idea to create an open source asset and project management solution. But as we know it is a tough-tough topic.
So what I expect from that acquisition? Is it all about the big fish eats the small one? Maybe. Because Autodesk provides lots of tools for VFX an CGI (but certainly not all of them) I think there is a need to establish a clear terminology for the industry. There is a global need of generalization I think. Example for that is OpenExr and Alembic.
What do I mean generalization?
There are lot of things which are the same for eg. in Maya, Houdini, etc. and whole the industry use these  concepts. Polygon, shader, render, etc. for example.
But lot of concepts are conceived at different vfx companies, universities and software developers, etc. which I think should be the same. Asset is a typical example for that. Is it a file? Or is it a set of file versions? Or it is a lot of small components which build a 3d character?
Another example is a status of a task. Task is a complex thing itself. About it statuses: there are ready to start, WIP, hold, pending, approved, completed, on feedback, daily, commented, reviewed, has revision, omitted, etc. In this list reviewed, has revision, commented basically the same. Certainly should be an exact definition for for statuses and certainly should be a clear picture how many status necessary for the project management.

There should be a standard definition for a lot of concept in connection with VFX-CGI.
I think a major player on the asset and project management field or an open source movement can affect the generalization of the industry. It might be Shotgun.

About Shotgun you can read here.
About the acquisition you can read here and here.




Wednesday, September 17, 2014

Naming Convention 2. - Pipeline (CG / VFX)

When we are thinking about naming convention more or less thinking about pipeline. So couple of words about pipeline.

We can separate workflow and pipeline. I could write a novel about this. Just look these words up in wikipedia. Of course we are talking about VFX or CG here so the simple conclusion is the following:

Workflow
A process like modeling, riggin, texturing, etc.

Pipeline
There is now exact wikipedia article about VFX pipeline. In general it means "chain of data processing stages". In VFX it could be workflows and their connections. We can imagine some kind of flowchart like this:



The arrows can be simple data input/out put connections or data processing as well. The boxes are the workflows as you can see above. Pipeline can refer to the arrows. Personally I prefer the concept that pipeline is the whole stuff (workflows and the arrows) as you can see above.


With computers we create, modify and store data. As simple as that. So the question is how we do that?

Workflow means (most of the time) we use softwares like Maya, Nuke, Houdini, Blender, Photoshop, etc.. They have input and output data: usually files. We have to store them in a consistent manner. Naming convention refers to that consistency.

We have to separate files from each other based on the content and store information within the filename. To organize files we use folders.
So the goal to establish an organized folder and file structure ruled by the naming convention.


Files and folders are ruled by the operating system (OS) therefore we have to accommodate these rules to the naming convention.

As I wrote before there are couple of problems with of folder and file structures in general. For example:
1. Limitation of the length of the file path.
2. One file can be only in one folder.
But this would be another topic. I'm going to write about it.


Tuesday, December 3, 2013

Naming Convention 1.

Simply it is the most important weather you are an artist or technician (so called TD) in the VFX industry. Furthermore it is the most important thing for mankind (or the universe). Naming convention is essential for everything.
Unique projects has unique naming convention. But let's pretend you won't do anything that nobody did before meaning of the process. So there are guidelines.
Naming convention is extremely important but there is another principle. As Richard Williams wrote in his book: "Keep it stupid simple." aka KISS.
Working with computer means you use operation systems like Windows and you create files which could be organized in directories. But you will find out sooner or later there are at least 2 big problem here.

Big problem 1.
One file can only belong to one directory.

Big problem 2.
More data we have that we can simply put into names, filenames for eg.

But these problems raise a lot of other issues. And this blog is more or less about to discuss those issues. Right now I simply use the KISS principle which also means (for me) do it as you can.

So we need a general solution of file naming. Before I tell you the truth I gather some ideas.

1. Importance of the order

Usually files are arranged by their names (alphabetical order).  So by giving names we can describe the order of the files.

2. Parts (tags)

We can of course combine different information usually called tags. So the question is how many tags should be there to collect the most important information?

3. Compressing information

We can say abbreviation but is more than that. Question is how can we compress more and more information into alphanumeric character. So for eg. we can use abbreviations but in that case we should establish a dictionary for those, because BG does not necessarily mean background for everybody.

4. Documentation

If you are a one person studio you might think documentation is not important. But it is. I think it is for every scale of facilities. So the naming convention should be documented. It can change over time from project to project and that means the naming convention document can have versions or can be attached to projects. It could be a simple text file.

4.1 Documentation template

Usual form to template naming convention is:
[tag1][separator][tag2][tag3][separator][tag4]

It can describe a file rules as well.

We can use explicit characters and variable names to be more clear.
[name]_[versionLetter][versionNumber]_[comment]

It could be necessary to explain the rule of the variables. We can call it file rules.
[name] Starts with capital alphabetical character and contains any alphanumeric character
[versionLetter] - Any non-capital alphabetical character

This example above use the "_" (underscore) as a constant character or tag. That means you can't change it. Usually when we describe a file path there are constant directories so they are constants as well:
e:/ Projects / [ProjectID] / 2D / ConceptArt / [AssetID] / 
[AssetID]_[versionLetter][versionNumber]_[comment]

In this example above the "Projects", "2D" and the "ConceptArt" are constant tags.

More complex when we use expressions like "AssetID", because this is not a simple variable but a concept plus and abbreviation (ID = identification). We should describe things like Asset and/or AssetID before we use it. But it is not the part of the naming convention documentation rather a documentation of the pipeline or system we utilize.

5. Character table
It is always recommended not to use special characters. That means file names contain only alphanumeric character, underscore and hyphen. We can express with regular expressions: [A-Za-z0-9_-] (see below)

So this would be my general template for file naming:
[name]_[vatriationLetter]_[versionLetter][versionNumber]_[comment]

And the rule for this pattern:
[name] - Starts with capital alphabetical character and contains any alphanumeric character
[variantLetter] - Only one capital alphabetical character
[versionLetter] - Only one non-capital alphabetical character
[versionNumber] - Two digit starts with 01
[comment] - Any alphanumeric character


Below we can see a series of examples how it looks in practice. So it is more like the explanation of the concept behind this naming convention.
Let's say I'm working on a landscape concept art. So the name part would be "Landscape". I separate the process stages like sketch, details, colors. So the version letters represent these stages (a, b, c). I can also comment where the stage starts to be more clarify.
Usually when we work on something we don't consider at the beginning there might be another variant for the subject. So if we use "A" as a base variant we won't ruin the naming convention later with adding an extra tag.

Landscape_A_a01_Sketch
Landscape_A_a02
Landscape_A_a03_Background
Landscape_A_a04
Landscape_A_a05_FGTrees
Landscape_A_b01_Details
Landscape_A_b02
Landscape_A_b03_BGMountains
Landscape_A_b04
Landscape_A_b05
Landscape_A_c01_Colors
Landscape_A_c01_SkyAndClouds

You might find the "a", "b", "c" a little bit confusion to use for versions. You are not the only one. Most people use a "v" letter like  "v01", "v02", etc. But using only one constant version letter we can't embed more information with that.


Footnotes

Regular Expressions aka Regex

Regex is a tool to analyze names. Usually it used to verify and search. If you have a basic idea how regex works you might want to establish naming convention that can be easily handled with regex.
For eg. the naming convention above can be described as regex pattern like this:
[A-Z] [A-Za-z0-9]+_[A-Z]_[a-z][0-9]{2}_[A-Za-z0-9]+

So the regular expression tells to the engine the name:
Starts with one capital alphabetical character [A-Z], followed by alphanumerical character [A-Za-z0-9], it could be one or more +, followed by an underscore _ (constant letter), followed by a capital alphabetical character [A-Z], followed by an underscore, followed by a non-capital alphabetical character [a-z], followed by any number [0-9], it has to be exactly two digit {2}, followed by underscore, followed by any alphanumerical character [A-Za-z0-9] and it could be one or more +.

The real benefit to use regex comes when you or your studio use programming languages or other tools to verify or match paths, file names, or any kind of text, etc.