【Maya】Qt(PySide) In Maya

【存在问题】

至此,PySide结合maya创建脚本界面的流程结束。尽管只是简单的功能,但是代码量却很惊人,有将近100行。而以传统方式构建UI,只需要不到20行即可。为了更好的对比效果,我设计了更为复杂的UI。

)Python+MayaUI:140

(右)PySide+Qt:2050

尽管在执行效率上的差异可以忽略,但巨量代码的维护工作将变得繁琐。而且这里发现了一个影响程度很大的兼容性问题:windows环境下高DPI显示异常。

27寸显示器在使用4K分辨率的时候,系统默认将字体放大150%以匹配视觉效果(不建议缩小),这就意味着用户自定义脚本界面的字体会随着放大。

和windows平台不同,苹果的mac设备采用视网膜显示技术,OSX高DPI环境下显示是正常的。

原生的PySide是有解决方案的,例如使用自适应函数:

QtWidgets.QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)

但集成于maya2019的Pyside目前还无法实现高DPI自适应,因为这个函数必须在程序启动前执行才有效果,而基于maya的PySide不具备第一启动的条件(Maya的PySide默认关闭该函数)。

尽管maya原生的UI系统在高DPI下也有一些小问题,例如弹出提示文本的功能失效,但总体的兼容性是高于PySide Qt的。

如果用户仍打算在windows的高DPI环境中使用PySide Qt,有一个不完美的解决方案。在maya的exe可执行程序上右键,使用高DPI兼容的系统模式。用这种方式启动maya后,PySide Qt的界面会进行系统自适应(UI等比例放大),但maya的菜单文字将变得模糊,是个顾此失彼的妥协方案。

*这个方法也适用于不支持高DPI的游戏


【总结】

【PyQt或者PySide编写UI界面】

优点:高效美观的UI设计流程,可独立的UI文件,强大的PySide库

缺点:额外的学习成本,庞大的UI源代码,不兼容高DPI显示,在maya中的外观有差异

【Python调用maya内置UI函数】

优点:执行速度快,稳定性高,兼容高DPI显示,逻辑关系简单易懂,齐全的参考资料

缺点:UI可定制功能少,无可视化制作流程,编写效率低

编写脚本,个人认为学习基本的python语法是有必要的,但深入的去研究PyQt或者PySide编写程序的过程,超出了我的需求,尤其是在maya并没有完全兼容它们的情况下。因此,在未来很长一段时间内,我个人倾向于使用python语法调用maya内置函数的方式来编写脚本。

总的意思就是:Qt(PySide) In Maya 2019暂不推荐。

你也可能喜欢阅读这些文章:

0 评论
Inline Feedbacks
View all comments

Copyright© VIVICG 版权所有 粤ICP备 17111516号 粤公网安备 44011102000879