在影视、动画和游戏特效(VFX/Animation Pipeline)行业中Python 调用RV Play
- [使用RV Playa编辑器](#使用RV Playa编辑器)
-
- [一、 RV 进程内部常用的 Python API (rv.commands)](#一、 RV 进程内部常用的 Python API (rv.commands))
- [二、 外部管线脚本常用的 RV 控制方法(通过 Python 启动)](#二、 外部管线脚本常用的 RV 控制方法(通过 Python 启动))
- [三、 行业特有的高级协同方法](#三、 行业特有的高级协同方法)
使用RV Playa编辑器
在影视、动画和游戏特效(VFX/Animation Pipeline)行业中,控制 Autodesk RV 播放器最核心、最官方正统的 Python 模块是 rv.commands(运行在 RV 进程内部时),或者是通过 命令行 (subprocess) 在外部拉起。
以下是行业内最常用的几 个 Python 控制 RV 的方法(涵盖内部 API 操作与外部启动控制):
一、 RV 进程内部常用的 Python API (rv.commands)
当你在 RV 软件内部编写 Package(插件)、自定义 Menu 菜单或通过 Event 触发脚本时,使用 from rv import commands。
- 添加媒体源 (commands.addSources)
作用:在当前打开的 RV Session 中动态追加新的视频、图片或图像序列。
常用场景:艺术家在网页端或管线工具里右键"在 RV 中追加对比"时调用。
python
from rv import commands
commands.addSources(['/path/to/shot_v001.mov'])
- 设置全局播放帧率 (commands.setFPS)作用:强制设定当前播放器的时间轴帧率(如 24, 25, 30fps)。
常用场景:读取项目数据库中的帧率字段,初始化 RV 播放速度。
python
commands.setFPS(24.0)
- 获取与设置节点属性 (commands.setIntProperty / commands.getStringProperty)
作用:RV 内部所有的图像处理、图层叠加、色彩管理都是基于节点图(Node Graph)的。通过该方法可以修改底层属性。
常用场景:调整曝光、对比度、或者切换色彩空间(OCIO)。
python
val = commands.getFloatProperty('colorNode.exposure', 0, 1)
commands.setFloatProperty('colorNode.exposure', [1.5], True)
- 控制播放状态 (commands.play / commands.setFrame)
作用:控制播放器的播放、暂停、跳转到指定帧。
常用场景:配合外部交互事件,实现多台机器的协同审片或自动跳转到指定版本。
python
commands.play() # 开始播放
commands.setFrame(101) # 跳转到第 101 帧
- 获取当前 Session 的媒体列表 (commands.sources)
作用:获取当前 RV 正在播放的所有媒体文件路径。
常用场景:审片时需要导出当前查看的成片清单或生成报告。
python
media_list = commands.sources()
print(media_list)
二、 外部管线脚本常用的 RV 控制方法(通过 Python 启动)
在没有打开 RV 时,TD 通常用 Python 的 subprocess 或各公司的封装库(如你问题里的 ct_rv)来拉起 RV。
- 命令行带参启动:指定帧率和入出点 (subprocess.Popen)
作用:从 ShotGrid/Flow 或 Maya/Houdini 导出渲染图后,直接用特定参数唤起 RV。
常用场景:一键预览渲染结果。
python
import subprocess
rv_path = "C:/Program Files/rv_player/bin/rv.exe"
cmd = [rv_path, "-fps", "24", "-in", "100", "-out", "250", "/path/to/seq.%04d.exr"]
subprocess.Popen(cmd)
- 传递 Session 文件(.rv 文件)启动
作用:RV 支持将一组复杂的播放配置保存为 .rv 文件(本质是一个文本或 GTO 格式的图表文件)。Python 预先生成这个文件后让 RV 加载。
常用场景:导演审片时,管线自动生成包含数十个镜头的复杂对比 Session,一键打开。
python
cmd = [rv_path, "/path/to/review_session.rv"]
subprocess.Popen(cmd)
- 环境变量注入:配置色彩空间 OCIO (os.environ)
作用:在 Python 启动 RV 进程前,注入环境变量,使 RV 默认加载影视公司的标准 ACES 色彩配置文件。
常用场景:确保全公司审片颜色标准一致。
python
import os
import subprocess
env = os.environ.copy()
env["OCIO"] = "/pipeline/config/aces_1.2/config.ocio"
subprocess.Popen(["rv.exe", "/path/to/shot.exr"], env=env)
三、 行业特有的高级协同方法
- 远程控制协议 / 监听端口 (rvpush)
作用:RV 自带一个叫 rvpush 的轻量级通信工具。Python 可以通过调用 rvpush 命令,向已经打开的正在运行的 RV 实例发送指令,让它打开新文件,而不需要重复开启多个 RV 进程。
常用场景:美术在网页端点一个镜头,后台 Python 默默让已经在后台挂着的 RV 切换到那个镜头。
python
subprocess.Popen(["rvpush", "add", "/path/to/new_shot.mov"])
- 联动 Flow Production Tracking (原 ShotGrid) 审片同步
作用:通过 ShotGrid/Flow 的 Python API 或官方的 RV 插件集成,将当前 RV 里的画笔涂鸦(Annotate)、笔记(Notes)、状态(Status)直接同步回数据库。
常用场景:总监在 RV 里画圈批改镜头,Python 脚本自动将截图和评语回传到制片系统。