CGRU / cgru

CGRU - AFANASY
http://cgru.info/
GNU Lesser General Public License v3.0
278 stars 111 forks source link

Simultaneous Rendering with Different Application Versions #469

Closed eoyilmaz closed 1 year ago

eoyilmaz commented 4 years ago

So, this one was on my list for quite long time.

What I mean by simultaneous rendering is to use different versions of the same application. For example, rendering with Maya 2017, 2019 and 2020 at the same time or with Houdini 17.0, 17.5 and 18.0 at the same time.

The use case scenario is this; basically sometimes the projects are started with different versions of the applications and most of the time the project supervisor is reluctant to update to the new version to not to break a working pipeline or they don't want to spend the extra time to investigate if the pipeline is working properly with the new version etc etc. And along side this old projects, new projects starts with the newest and latest versions of the applications. This forces the studio to do the "Simultaneous Rendering with Different Application Versions".

With current version of CGRU/Afanasy, the scripts under software setup folder are using the first version that they found or the ones that you set with locate_{{application}} scripts.

Back in 2017 when I was working on a studio (freelancer since) we were doing it by hacking the scripts under "software_setup" folder to start a certain version of Maya, Houdini and Fusion and render with those specific versions.

For example I was using the AF_CMDEXTENSION environment variable to set the desired version for Maya and then calling the maya$AF_CMDEXTENSION command for the render. In this case I had to create a maya2019 shell script under the software_setup/bin/ folder.

I know that it is a strong requirement for studios as such and I want to implement this to the system.

So what I want to do is to allow the start_{{application}}.{cmd, sh} scripts to accept an argument where you can specify the application version. And update the files under software_setup/bin to use that specific version of the DCC.

Do you have any suggestions on how to implement this or may be not implement at all or may be I'm missing something and the system is already doing it...

timurhai commented 4 years ago

Hi!

There is no software version choosing in CGRU. Various studios do this in their own way. And I do not know what is the simplest way that can be implemented in CGRU.

Yes. If submission plugin can modify command with some extra argument(s), it can be the simplest way for a version choosing.

btw I know several studios that using simultaneous rendering with different application versions with Afanasy (and it can be also used with any other render manager). There is a way that does not need any render manager (submission scripts) modification. The version is "stored" in the working directory. And i think that this is the best, most flexible, but most complex way.

The idea is to store software setup with the project. For example, if we run "hrender_af" command (or any other that can be used on farm), it does not searches software in some installation folder, but it searches setup script in the current folder. If it does not exist, it goes to the parent folder, and so on till the root folder were it can find some default setup.

This way we can setup different projects (and may be even shots) to use different versions of software. And even more! Not only different software versions, but the entire environment can differ. So we can use different versions of any plugins, project specific (scene specific) scripts and tools (assets).

ps Shell script that searches setup_something.sh files in the folders structure is not so complex, i think it is simple.

eoyilmaz commented 4 years ago

So let me modify the scripts and create a pull request for you to review the code then :+1:

aleld commented 3 years ago

Hi!

I totaly agree with @eoyilmaz. I am in a small studio starting to work with Afanasy and this feature is well needed. Are there any news on this subject? Is there being worked on at the moment?

P.S.: Keep up the good work 👍

eoyilmaz commented 2 years ago

With https://github.com/CGRU/cgru/pull/539 it is now super easy to setup a rez environment that uses different versions of applications. Also I've setup some example packages under my Anima Pipeline repository: https://github.com/eoyilmaz/anima/tree/master/anima/rez_packages

timurhai commented 1 year ago

Another simple way to store soft version is to store environmet variable. By default CGRU software setup search the latest version in software installation folder. But if this folder is already set in environment variable (NUKE_LOCATION, HOUDINI_LOCATION), it uses this provided location. Nuke gizmo and Houdini Afanasy ROP already got a functionality to set environment variables and a button to store current software location (version).