首页 > 解决方案 > 将 Python 类实例保存为 Maya 场景对象

问题描述

在我的场景中,我有一个 Python 类 Base() 的实例,它本质上是一个用于将装备模块添加到我的角色装备中的容器。创建 Base 的实例后,我的脚本将其存储在名为 rigBase 的变量下。Base() 类具有用于存储不同装备组件的组,例如。rigBase.jointGrp rigBase.ctrlGrp。这让我可以通过将 rigBase 变量传递给每个模块的构建函数来将 rig 模块组织到 Base 中。问题是这个变量存储在内存中而不是实际场景中,所以当我保存和加载场景时,变量丢失并且新模块无法访问 Base() 的实例。

我的问题是,如何将变量 rigBase 存储在我的场景中,以便当我保存/加载文件时,我的脚本能够将先前创建的组节点识别为 Base() 的实例?

标签: pythonclassinstancemayascene

解决方案


我可以将类的实例转换为二进制或 ascii 可写格式,但我认为这不是保存数据的好方法。我建议检查您真正需要知道哪些数据,并尝试使用 json 或 pickle 仅序列化该数据。然后,您可以将此数据附加到任何 Maya 节点或将其保存为单独的文件。然后,如果加载了场景,则可以加载这些信息并将其转换回并附加到新的 Base 实例。


推荐阅读