DCC软件的路径映射

前言

路径映射允许你定义从一个路径到另一个路径的转换,这在处理项目迁移共享资产或在不同的操作系统下工作时非常有用。

举个例子,这一个普通的资产路径:
Z:\show\TST\assets\chr\baseMan\rig\maya\baseMan_rig_v001.mb

当我们从外包收回文件时,它们存放资产的盘符可能是以V:\project\TST作为路径开头,
打开文件你就会看到路径丢失的提示。

而设置好路径映射,在打开文件时Maya自动将文件中的旧路径映射到新路径。
Maya能找到正确的路径,也就看不到上面的弹窗了
这种映射是在Maya处理文件路径的阶段进行的,不会修改原始文件。

下面会以MayaHoudiniNukeShotGrid RV为例,介绍如何在这些软件中设置路径映射。

Maya

参考: https://download.autodesk.com/us/maya/2009help/CommandsPython/dirmap.html

不同盘符路径映射

比如外包收回的文件,它们资产盘符在V:\project\TST\assets,而自己公司的资产路径为Z:\show\TST\assets

那么可以在userSetup.py文件中添加路径映射

1
2
3
4
5
6

# 开启路径映射
cmds.dirmap(enable=True)

# 设置路径映射
cmds.dirmap(mapDirectory=[r'V:/project', r'Z:/show'])

不同操作系统路径映射

这种情况适用于多个操作系统,比如在windows中路径为V:\project,在linux中路径为/project

1
2
3
4
5
6
7
8
9
# 开启路径映射
cmds.dirmap(enable=True)

if cmds.about(ntOS=True): # 当系统为windows
cmds.dirmap(mapDirectory=[r'/project', r'V:/project'])
elif cmds.about(linux=True): # 当系统为linux
cmds.dirmap(mapDirectory=[r'V:/project', r'/project'])
else:
pass

Nuke

参考: https://learn.foundry.com/nuke/12.0/content/comp_environment/configuring_nuke/file_paths_cross_platform.html

init.py文件中,写入下面内容。
并将这个文件加入到NUKE_PATH变量中。

不同盘符路径映射

1
2
3

def filenameFix(filename):
return filename.replace(r'V:/project', r'Z:/show)

不同操作系统路径映射

1
2
3
4
5
6
7
8
9
10
11
12
import platform

def filenameFix(filename):
if platform.system() in ('Windows'):
if filename.startswith('V:'):
# 本身是windows路径,则直接返回路径
return filename
# 如果是linux路径返回windows路径
return filename.replace('/project', 'V:\\project')
else:
# 非windwos路径,返回linux路径
return filename.replace('V:\\project', '/project')

注意,使用这个方法在打开nuke文件时,也会对打开的nk文件路径生效,如果发现文件无法打开的问题,请检查代码。

Houdini

参考: https://www.sidefx.com/docs/houdini/commands/pathmap.html

houdini的话是使用环境变量来做路径映射。

1
HOUDINI_PATHMAP='{"/project": "N://project"}'

ShotGrid RV

参考: https://help.autodesk.com/view/SGSUB/CHS/?guid=SG_RV_rv_manuals_rv_user_manual_rv_user_manual_chapter_a_html

关于RV我只用来做过跨系统的路径映射。
比如ShotGrid记录的是linux路径/show/TST/xxx.mov,在windows上打开RV想要加载这个视频,则可以像这样配置环境变量:

1
2
RV_OS_PATH_WINDOWS='V:\show'
RV_OS_PATH_LINUX='/show'