Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Directory Mapping is a Tractor feature that allows you to specify file system paths on one system that correspond to the same asset paths on a different operating system. For example, if a job script is created on a Windows system with UNC file paths, and you want the job to run on a Linux or OSX system macOS system where files are accessed through NFS, then you can specify a directory mapping which will alter the UNC paths to NFS paths. Directory maps can also be useful to replace a drive letter in Windows paths with a fully qualified UNC path.

To specify a directory map, you can add the Job parameter -dirmaps in this form:

Job -dirmaps { maps }

where maps is a list of directory maps in this format:

{ { source } { destination } zone }

In this format, source will be replaced by destination in a file path if the job is being run on a computer in the specified zone.

For example, here are some valid directory maps in a job script:

 Job -title {A Simple Job}
     -dirmaps {
         {{mayabatch} {maya} NFS}
         {{X:/} {//fileserver/projects/} UNC}
         {{X:/} {/fileserver/projects/} NFS}
     -subtasks {
         Task -title {render a.rib} -cmds {
             RemoteCmd {%D(mayabatch) -batch -file {%D(X:/proj1/scenes/} -proj {%D(X:/proj1)}} -service {RfMRender}

There are three different maps specified in this -dirmap option. The first one specifies that mayabatch should be replaced by maya when the job is run on a computer in the NFS zone. The second one specifies that X:/ should be replaced by //fileserver/projects/ when the job is run on a computer in the UNC zone. Directory maps are only applied to the text within the %D() areas of the command. So, if this job was run on a Windows computer in the UNC zone, then the command would be run as:

mayabatch -batch -file //fileserver/projects/proj1/scenes/ -proj //fileserver/projects/proj1

If the job was run on a Linux or OSX macOS computer in the NFS zone, then it would be run as:

maya -batch -file /fileserver/projects/proj1/scenes/ -proj /fileserver/projects/proj1

By default, Tractor Blades running on Windows will use the UNC zone, while Linux and OSX macOS blades will use the NFS zone. The zone name can instead be set explicitly for given hosts by specifying the "DirMapZone" value in the matching blade profile.

Also, note that directory maps are only applied if the text within the %D() that begins with the source text from the directory map. So, if a directory map was listed as { {x} {y} UNC }, then the text in %D(zzzx) would not change, but the text in %D(xzzz) would change to yzzz. 

Setting Up Directory Mapping for RenderMan for Maya

You can find those instructions here.

Windows Service Considerations

Windows services run without access to mapped drives. So, if your Maya project is set to a mapped drive location such as X:\projects\proj1, then you will need to set up directory mapping so that your Tractor Blades running as a Windows service can access that location. If your X:drive is mapped to \\fileserver\projects, then you will want to set up a directory mapping for the UNC zone like this:

SetPref WSDirMaps { {X:/ //fileserver/projects/ UNC } }

Note: Windows will sometimes cache SMB mount credentials, or sometimes it will clear its cache of previously authenticated credentials. Particularly on recent Windows editions (8.1+) when the blade is running as a service, the credential for the UNC name will need to have its Persistence set to "enterprise". This is not what it will be set to if you simply browse to the share in the File Explorer and type the password in there. To set the persistence:

  • Open Control Panel->User Accounts and Family Safety->Manage Windows Credentials
  • Delete any old credentials for the given share, IF the persistence is not already "enterprise"
  • Click "add a Windows credential"
  • Enter the appropriate \\server\share, account name and password.

Remember to configure the tractor-blade service to run as the same user. * Go into the Control Panel->...->Services and set blade service's "Run As Account" to your selected account. * Restart the service