You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Maya自定义Playblast工具:如何查询特定格式的可用压缩选项?

获取Maya Playblast特定格式对应的压缩选项

嗨,我之前开发Maya Playblast工具时也遇到过一模一样的问题!确实,直接在query=True的模式下指定format参数是行不通的——Maya的playblast命令在查询模式下会忽略格式这类设置参数,只会返回当前全局设置对应的压缩选项。

不过我找到了一个实用的解决办法,核心思路是临时切换到目标格式,再查询压缩选项,最后还原原来的格式,具体步骤和代码如下:

单个格式查询示例

import pymel.core as pm

# 先保存当前默认的Playblast格式,避免影响后续操作
original_format = pm.playblast(query=True, format=True)

# 定义要查询的目标格式
target_format = "qt"
# 临时切换到目标格式(query=False是默认值,可省略,但写出来更清晰)
pm.playblast(format=target_format, query=False)
# 现在查询该格式对应的所有压缩选项
available_compressions = pm.playblast(query=True, compression=True)

print(f"格式 {target_format} 的可用压缩选项:")
for comp in available_compressions:
    print(f"- {comp}")

# 还原回原来的默认格式
pm.playblast(format=original_format, query=False)

批量查询所有格式的压缩选项

如果需要一次性获取所有可用格式的压缩选项,可以封装成一个函数:

import pymel.core as pm

def get_playblast_compressions_by_format():
    # 获取所有可用格式
    all_formats = pm.playblast(query=True, format=True)
    # 保存原格式
    original_format = pm.playblast(query=True, format=True)
    
    format_compression_map = {}
    for fmt in all_formats:
        # 切换到当前格式
        pm.playblast(format=fmt)
        # 获取对应压缩选项
        compressions = pm.playblast(query=True, compression=True)
        format_compression_map[fmt] = compressions
    
    # 还原原格式
    pm.playblast(format=original_format)
    return format_compression_map

# 调用函数并打印结果
compression_map = get_playblast_compressions_by_format()
for fmt, comps in compression_map.items():
    print(f"\n{fmt} 格式的压缩选项:")
    for comp in comps:
        print(f"- {comp}")

注意事项

  • 对于image格式(序列帧),它本身没有视频压缩选项,所以查询结果通常是['none'],这是正常现象。
  • 一定要记得还原原来的格式,否则后续默认的Playblast格式会被修改,可能给用户带来困惑。

内容的提问来源于stack exchange,提问作者Mendel Reis

火山引擎 最新活动