前言

  在开发完TSM镜像工具不久之后,苏老板(技术部部长)就让我对接外包检查工具的开发。
  并且将开发的过程记录在内网的gitlab上面。
  这里部长给我推荐了 smartGit 软件,作为可视化的git工具,可以极大简化了git命令行操作的繁琐。
  也幸亏自己弄网页的时候有研究过git的使用方法,用起来问题不大。

开发目的

  其实公司内部就已经有一套做好的检查工具,可以让产线的制作人员进行检查,确保制作的流程都是符合规范的。
  但是这次开发是为了给外面的外包公司对接用的,我要做的是在确保闭源的同时,还要保证插件的主要功能可以顺利运行。

界面开发

  接到这个任务的时候,我已经将 UI2CG 的2.0版本做好了,所以界面开发完全不是问题。
  完全就是在之前的TSM镜像工具的界面上进行修改,所以基本就是套皮制作。
界面外观
  现在唯一的难点就是需要将相关的检查信息输入到 Qt Designer 里面而已

插件开发

  检查功能需要调用已经写好的 fantabox 里面的检查代码,里面的代码着实是够混乱的(/ω╲)
  所以后面我就是和徐思建进行对接,将工作做好。
  对我来说,这个插件的开发难度甚至还要低于TSM镜像工具,毕竟关键的检查功能不需要我去弄了。
  我主要是怎么将界面的信息显示好就可以了。
界面外观
  上面就是最终的信息呈现效果
json
  这是之前的显示效果,确实之前的方法不好。
  之前最初的想法只是想将信息罗列出来,所以我是同过批量生成单行 textFiled 实现的。
  这样的实现第一个是无法选择,第二个是生成过程很慢,场景复杂要等待很久。
  为此我还特地给生成过程加了进度条,不爽了可以取消生成。
  当然这样是通不过上面的要求的。
  为了便于选择,在 textFiled 前面加上了按钮进行选择。
  结果还是没通过,因为这样只能单选而不能多选。
  于是徐思建给我提到用 cmds.textScrollList() 的功能可以实现多选的效果。
  于是我进一步开发就有了上面看到的效果


检查设置
  根据徐思建那边的要求,我也加入了检查设置的切换功能。
  为此还折腾了好久他们之前写的json格式
json
  最后总算是弄明白了这个json配置的运作原理。
  想到了这个是闭源的工具,如果json配置被修改了就很麻烦,但是如果写在代码里面就更加麻烦了。
  毕竟这些配置我们也是会修改的。
  所以最后我打算对这个文件加密,所以更具我之前所知道的加密方法,开发了 CHR_Encrypter ,加密操作可以查看我相关的文章
Encrypt
  最后实现的效果是这样的。
  我们这边可以通过我开发的 CHR_Encrypter 进行解密修改。


  另外苏老板给出了意见,希望我这个工具可以见信息记录一份到摄像机上,另外本地又保留一份。
  log 文件本地记录功能
log
  将检查的问题记录在 log 信息中
log Info
  Maya 透视摄像机 Note
摄像机note
  其实这个过程开发也遇到了一些小坑
  最主要是摄像机的信息记录问题。
  一开始以为note属性就在摄像机当中,直接进行setAttr处理。
  后面才发现,原理新场景的摄像机都是不带note属性的,而且每当我将note的信息清空了之后,note属性就没了。
  所以我执行的时候必须确保要note属性来进行属性的修改。
note生成代码
  通过 Echo All Command 可以找到上面的Mel可以生成摄像机的note属性。
  这是一段外部的Mel脚本,不是内置的mel命令,所以无法通过Python去调用。

打包

  毕竟这个插件是要闭源的,所以后面所有的代码都要统一打包成pyd的形式进行调用。
  我还要提取出fantabox相关的检查代码,统统打包起来。
  打包Pyd就需要技术部的邓志恒的帮忙,专门研究C++的人才,果然不同凡响。
  最初我的旧电脑不知道什么原因安装Visaul Studio 失败了,没办法用 cython 来编译文件,
  所以最初的测试我都得麻烦他给我打包。
  而我自己打包之后也遇到了 __file__ 路径的问题,经过好几种方案的测试之后,最后只好生成空文件,导入空文件的路径的方法了。
  后面我将检查工具相关的代码统统提取了出来,代码量有点多,而且这些代码又存在一些问题,再加上我的新电脑有了。
  于是就重新再新电脑上配置好所有的环境,我自己将所有的代码打包好了。
  中间虽然也遇到了些编码问题,不过我都妥善处理好了。

总结

  原本这个东西的工作量不算太大,不过辗转反侧,还是干了差不多10多天吧,
  后续就是Ziva插件的研究,我需要重点突破 Python Maya API 的功能,实现点对点绑定的 Deformer