0015整合Perforce进Maya(使用Python操作P4)

时间:2024-04-14 12:05:44

这段时间有一堆Motion Capture的文件要处理,Jira上给到的表格中只有文件名,需要到Perforce上去搜,然后Get下来,到Maya中做一系列处理之后生成多个文件,再上传到Perforce服务器交由后面动作人员进一步细调。因为量有点多,而且后续动捕还在源源不断的产出,不同的角色骨架不一样,处理的过程也不尽相同,关键是多了难以记住,所以写了个工具尽可能自动化。

 

我们项目都是用Perforce管理的,准备后面干脆把Perforce相关操作整合到Maya里面好了,省得几个软件之间切来切去,那些超长的路径核对起来也容易眼花。想起了以前PM提交时拿个本子跟笔来记...哈哈,实际上可以写个工具批量提交,Perforce有Python,.Net多种语言的API。

 

多说一句Perforce还是挺好用的,只是要花钱,哈哈;免费的呢又只提供最多5个人用,有点只给你玩玩的意思。

 

为了写这,我今天又去官网下载安装,在自己笔记本上搭建了个服务器。上一篇有个地方说得不太对,它申请是要申请,我原以为要等官方审核才能拿到,其实申请可以随便填,完成就可以下载。

 

搭建过程不说了,官方有****,Windows上比较简单,我这里也只是弄个演示,没研究权限管理啥的。创建仓库什么的都跳过去,这里重点只介绍在Maya中如何整合它。

 

下面开始,我先用QtDesigner搞个UI出来0015整合Perforce进Maya(使用Python操作P4)

 

我习惯将ui文件转成py代码

0015整合Perforce进Maya(使用Python操作P4)

 

现在默认从Perforce官方下载安装的Package是Python3.7的,Maya2020的Python版本还在2.7, 用不了那个,我在Google TA Group上找到个能用的

0015整合Perforce进Maya(使用Python操作P4)

 

写代码实现连接P4、Get最新档、Check Out、添加新文件、提交这些最常用的功能

0015整合Perforce进Maya(使用Python操作P4)

0015整合Perforce进Maya(使用Python操作P4)

 

因为项目制作过程中基本上不可能不开P4客户端, 所以我就没弄要输入密码连接,相当于使用了登录P4时缓存的ticket; 另外P4看起来不认unicode, 所有字符串都要转成str,估计Python3时代应该没这个问题了吧

0015整合Perforce进Maya(使用Python操作P4)

 

Maya里使用基本上是填好P4相关信息,点P4 Test看看是否能正确连接上Perforce,如果正常的话,按钮变绿色

0015整合Perforce进Maya(使用Python操作P4)

 

填入P4上文件路径,点Open File,就会从Perforce服务器Get文件的最新版本,CheckOut, 然后在Maya里打开,准备进行编辑修改,底下会自动填上该文件的本地对应路径,方便后面提交;

0015整合Perforce进Maya(使用Python操作P4)

0015整合Perforce进Maya(使用Python操作P4)

 

实际上我在Jira上拿到的文件路径并不是上面这种全路径,仅仅只有如cube这样的文件名,Perforce服务器上也是可以搜索的,代码里面Sync语法上稍微不同,记得是用三个点来代表不确定的路径

0015整合Perforce进Maya(使用Python操作P4)

 

修改完后提交

0015整合Perforce进Maya(使用Python操作P4)

 

为方便使用,我实现了按住Ctrl键点P4 Submit按钮时,获取当前打开的Maya文件路径作为提交文件,然后mark for Add, Submit一气呵成,包括写提交说明

0015整合Perforce进Maya(使用Python操作P4)

 

基本上P4的Python API只是简单包装了一下它所提供的命令,有几种写法;其一是直接run对应命令,另一种是run_xxx, 是一种快捷点的写法,还有种fetch_xxx,相当于取run_xxx的结果,因为run_xxx结果是个list,里面一般也就一个dict元素;

 

这些xxx具体有哪些命令,详细怎么使用,可能需要到命令行下去查看帮助更快更方便

0015整合Perforce进Maya(使用Python操作P4)

 

最后我把这个demo相关代码放在了github上:

https://github.com/WendyAndAndy/P4

Ref:

https://www.perforce.com/manuals/p4python/Content/P4Python/python.programming.html