ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Fusion GLView 类脚本化完全指南:预览视图的缓冲区、LUT、立体显示与视图状态控制

2026/10/4 9:14:03 拓冰建站 浏览量
Fusion GLView 类脚本化完全指南:预览视图的缓冲区、LUT、立体显示与视图状态控制 人工智能AI 应用语音音频本地部署桌面应用【免费下载链接】auto-subsOn-device subtitle generation that connects directly to DaVinci Resolve, Premiere, and After Effects.项目地址https://gitcode.com/gh_mirrors/au/auto-subs点击查看免费下载本文以 AutoSubs 项目 Agent 工作区内的 Fusion 脚本手册类参考 glview.md 为骨架辅以仓库中真实调用 Fusion 的 Rust 桥接与 Lua 服务源码系统讲解 Fusion 中 GLView 类的全部成员与方法。读者将掌握如何通过 Lua / Python 脚本获取 Fusion 的预览视图View句柄切换 A/B 缓冲区与四宫格视图、控制 2D/3D 显示位置旋转缩放、管理 Monitor LUT、配置立体Stereo显示以及读写视图偏好配置从而在 AutoSubs 这类直接驱动 DaVinci Resolve / Fusion 的自动化工作流中精确操纵预览界面。背景这份手册在 AutoSubs 项目中的定位AutoSubs 是一款设备端字幕生成应用通过桥接直接连接 DaVinci Resolve、Premiere 与 After Effects。在 Resolve 侧AutoSubs 会把一个 Lua 服务安装进 Resolve 的Fusion/Scripts目录并用fusion:Execute()驱动 Fusion 合成与 AutoSubs Caption 宏。为帮助开发者和 AI Agent 编写这类 Lua/Python 脚本仓库的 Agent 技能Skilldavinci-resolve-fusion内置了一份从官方 PDF 转换的Fusion 8 Scripting Guide Reference Manual快照本文讲解的GLView类即来自其中手册索引00-index.md类参考文档classes/glview.mdSkill 总览SKILL.md注意手册首页横幅的限定条件这是 Fusion 8 时期快照可能过时或不准确。对于 DaVinci Resolve 脚本 API应以 resolve-api.txt 及本地安装的官方README.txt为准对于真实可用写法优先参考经过测试的代码如 AutoSubs 的 Lua 服务。GLView 是什么类层次与职责GLView表示 Fusion 合成中一个基于 OpenGL 的视图窗口View例如预览页面上分割出的 Left / Right 两个子预览窗口。它继承自FuView后者又继承自ObjectGLView父类FuView—— 视图窗口本身负责缓冲区切换、显示变换、LUT、立体显示、四宫格/SubView 布局与偏好保存FuView—— 极简基类仅提供只读成员ID()与Refresh()重绘方法见 fuview.mdGLViewer父类Object—— 2D 与 3D 查看器的父类是真正显示图像内容的查看器对象提供SetChannel、Redraw、LoadFile、SaveFile、ShowControls等见 glviewer.mdGL3DViewer继承GLViewer—— 3D 查看器额外提供CenterSelected、FitAll、FitSelected见 gl3dviewer.mdGLImageViewer继承GLViewer—— 2D 图像查看器可设置与显示 DoD、RoI、LUT。简言之GLView管窗口GLViewer管画面。GLView暴露的CurrentViewer成员正是两者的衔接点。获取 GLView 实例GetPreviewList 双语法要操作 GLView第一步是拿到它的句柄。手册在glview.md与 composition.md 中给出了标准取法用Composition.GetPreviewList([include_globals])获取合成内所有可用视图的表格浮动窗口视图则改用fusion:GetPreviewList()。随后按视图名如Left、Right取到该视图下的View对象即 GLView。Python 用法# Reach Left GLView of Fusion instance left comp.GetPreviewList()[Left][View] left.SetBuffer(0)Lua 用法-- Reach Left GLView of Fusion instance left comp:GetPreviewList().Left.View left:SetBuffer(0)要点GetPreviewList返回的是View对象表格可继续传给影响视图的各种函数include_globals为布尔参数用于决定是否包含全局视图注意 Python 与 Lua 的成员访问差异Python 用[Left][View]下标与点号混合Lua 用().Left.View链式访问两种语言的对象模型一致详见 02-scripting-languages.md。成员CurrentViewerGLView.CurrentViewer返回当前正在使用的查看器对象类型为GLViewer实际运行时多为GL3DViewer/GLImageViewer实例。获取方式Pythonviewer GLView.CurrentViewer典型配合用法来自 glviewer.md——先取 Left 视图再取其查看器设置通道并重绘left comp.GetPreviewList()[Left][View] left_viewer left.CurrentViewer if left_viewer ! None: left_viewer.SetChannel(0) left_viewer.Redraw()需要强调GLViewer 的多数Set*方法在调用后需要再调用Redraw()才会生效GLView侧对显示状态的修改则常配合ResetView()或依赖后续重绘。这个设置 → 重绘的模式是编写视图控制脚本最常见的坑。缓冲区控制GetBuffer 与 SetBufferGLView.GetBuffer()返回当前显示的是哪个缓冲区numberGLView.SetBuffer(buffer)用于显示三个候选视图中的特定一个。缓冲区整数值的语义如下手册原文经 PDF 转换有乱码此处还原为规范含义值含义0当前正在执行该函数的那个缓冲区视图即本 GLView 所在的 Buffer 视图1当前不是函数所在的那个缓冲区视图2A/B 分割视图例如若预览窗口是 Left B 视图向它传0就会把显示切到 B。配合SetSplit将缓冲区设为 A/B 并做 45 度居中分割Python# Set the buffer to A/B with a 45 degree split at the center left comp.GetPreviewList()[Left][View] left.SetBuffer(2) left.SetSplit(0.5, 0.5, 45)对应 Lua-- Set the buffer to A/B with a 45 degree split at the center left comp:GetPreviewList().Left.View left:SetBuffer(2) left:SetSplit(.5, .5, 45)显示变换位置、旋转、缩放与复位GLView 可以在 2D/3D 空间内精确控制预览画面的变换状态SetPos(x, y[, z])/GetPos()设置/获取显示位置相对中心点(0, 0)。X、Y 坐标在 2D 下以像素为单位在 3D 下以归一化unity为单位Z 坐标仅在 3D 下有效单位为归一化值。Python 中用GetPosTable()以表格形式获取。返回布尔值表示是否成功。SetRot(x, y, z)/GetRot()设置/获取显示绕 X、Y、Z 轴的旋转角度度。Python 中用GetRotTable()。SetScale(scale)/GetScale()设置/获取视图缩放百分比对应的数值0表示视图的 Fit适配选项50% 0.5200% 2.0。SetSplit(x, y, angle)/GetSplit()设置/获取 A/B 分割视图的分割中心坐标x、y与分割线角度angle度。Python 中用GetSplitTable()。ResetView()把显示重置为默认位置等状态。Fit 视图示例Python# Fit the Left view left comp.GetPreviewList()[Left][View] left.SetScale(0)Lua 等价写法-- Fit the Left view left comp:GetPreviewList().Left.View left:SetScale(0)Monitor LUT 控制GLView 提供对当前 Monitor LUT监视器查找表的完整控制方法说明EnableLUT(enable)启用/禁用当前 Monitor LUTenable为布尔值IsLUTEnabled()返回当前 Monitor LUT 是否启用布尔值LoadLUTFile(pathname)把 LUT 文件或设置或 LUT 插件 ID加载进 Monitor LUTpathname为字符串返回是否成功ShowLUTEditor()弹出当前 Monitor LUT 的编辑器窗口注意手册中该方法标题写作GLViewEnableLUT/GLViewEnableStereoPDF 转换时类名与方法名之间的点号丢失实际调用应按GLView.EnableLUT(enable)、GLView.EnableStereo(enable)处理。这是阅读这份转换手册时需要留意的一类 OCR 瑕疵。立体显示Stereo控制面向立体工作流的系列方法EnableStereo(enable)启用/禁用 3D 立体显示IsStereoEnabled()当前立体显示是否启用IsStereoSwapped()左右立体眼是否被交换SwapStereo([enable])交换左右立体眼视图可传布尔参数GetStereoMethod()返回当前立体显示使用的方法与选项字符串SetStereoMethod(method[, option1][, option2])设置立体显示方法method为字符串option1/option2为可选的附加选项GetStereoSource()返回立体显示当前使用的源ABsource布尔值SetStereoSource(ABSource, stacked[, stackmethod])设置左右立体图像的源ABSource、stacked为布尔值stackmethod为字符串堆叠方式。这类 API 在自动搭建立体预览环境、批量对比左右眼素材时非常实用。布局控制QuadView 与 SubViewGLView 支持两种特殊布局方法说明ShowQuadView(enable)将视图分割为四个子视图四宫格ShowingQuadView()返回视图当前是否被分割为四个布尔值ShowSubView(enable)启用内嵌的 SubView小窗显示ShowingSubView()返回内嵌 SubView 当前是否显示布尔值SwapSubView()交换 SubView 与主视图返回布尔值工具透传、锁定与偏好设置DisableCurrentTools()/DisableSelectedTools()透传pass-through当前选中的工具 / 当前选择的工具常用于脚本化地让选定节点进入旁通状态。GetLocked()/SetLocked(enable)查询/设置显示是否被锁定布尔值。GetPrefs()取回该视图的偏好设置表table。SavePrefs()/SavePrefs(configname)把当前视图偏好保存到命名配置LoadPrefs()/LoadPrefs(configname)则从命名配置载入。两者均有无参与带configname字符串两个重载版本。GetPreview([buffer])返回指定缓冲区number的 Preview 对象。GetViewerList()返回可用查看器列表table。SavePrefs/LoadPrefs并非孤立概念——AutoSubs 的 Resolve 桥接正是利用 Resolve 写入Fusion.prefs文件这一机制与 Fusion 侧 Lua 服务通信Rust 桥接代码在 resolve_bridge.rs 中注释writesFusion.prefsto disk immediately. We poll that file前端侧 resolve-api.ts 也写明Lua server answers by writing toFusion.prefsviaSavePrefs()。这从一个侧面印证了视图/合成偏好持久化SavePrefs这类 API 写入的偏好文件在真实 Resolve 自动化中是可观测、可轮询的状态通道。在 AutoSubs 中的落地路径AutoSubs 通过 Rust 侧把 Lua 服务安装进 Resolve 的Fusion/Scripts目录来驱动合成与字幕宏。相关源码可作为理解 GLView 使用场景的工程背景脚本安装逻辑resolve_scripts.rs —— 定位Fusion/Scripts根目录、安装/清理启动脚本库桥接与偏好文件轮询resolve_bridge.rs —— 按平台定位Fusion/Profiles/*/Fusion.prefsWindows%APPDATA%、macOS~/Library/Application Support、Linux~/.local/share/DaVinciResolve读取/轮询最新修改的偏好文件前端 Fusion 宏编辑器fusion-preset-editor.tsx —— 字幕外观在 Resolve 中编辑最终以宏的 Inspector 控件呈现。当需要编写这类与预览/视图相关的脚本时GLView 提供的就是窗口侧的完整控制面切换 A/B 缓冲、Fit/缩放、旋转复位、LUT 开关、立体交换、四宫格与 SubView 布局、视图锁定与命名偏好配置配合CurrentViewer取到的 GLViewer 对象再完成通道选择与Redraw重绘。使用注意与正确性边界时效性手册来自 Fusion 8 快照可能不反映新版本行为Resolve 侧 API 以官方README.txt仓库快照为 resolve-api.txt为最权威来源冲突时优先相信经过测试的真实代码。运行方式脚本既可放入 Resolve 的Fusion/Scripts目录经Workspace → Scripts菜单运行免费版与 Studio 均可用也可用仓库scripts/run-script.sh/run-script.bat调用fuscript外部运行仅 Studio 版。重绘依赖GLViewer 的多数Set*方法需配合Redraw()GLView 的显示变换类方法在 3D 下注意坐标单位为归一化而非像素。OCR 瑕疵GLViewEnableLUT、GLViewEnableStereo等标题中的点号在转换中丢失应按GLView.EnableLUT/GLView.EnableStereo理解。至此从取句柄、切缓冲、调变换到 LUT、立体、布局与偏好持久化GLView 类的完整脚本化能力已经闭环。赞分享人工智能AI 应用语音音频本地部署桌面应用【免费下载链接】auto-subsOn-device subtitle generation that connects directly to DaVinci Resolve, Premiere, and After Effects.项目地址https://gitcode.com/gh_mirrors/au/auto-subs点击查看免费下载相关推荐Instatic 如何实现多语言支持站点语言配置到切换器的完整指南Instatic 如何实现多语言支持站点语言配置到切换器的完整指南 产品要出海官网却只有一种语言怎么办Instatic 的多语言支持就是为这种场景准备的人工智能AI 应用语音音频本地部署桌面应用AutoSubs 中的 Fusion 脚本类参考FloatViewFrame 帧窗口激活与视图控制实战AutoSubs 中的 Fusion 脚本类参考FloatViewFrame 帧窗口激活与视图控制实战 本篇文章以仓库内 .agents/skills/dav人工智能AI 应用语音音频本地部署桌面应用Magit状态缓冲区深度解析掌握Git仓库的完整视图Magit状态缓冲区深度解析掌握Git仓库的完整视图 想要彻底掌握Git仓库的状态Magit状态缓冲区就是你的终极解决方案作为Emacs中功能最强大的Gi开发工具上一篇Sanctuary.js 开源项目教程JavaScript函数式编程的安全避风港下一篇开源项目 poooi/poi 使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考