教程

从第一次打开到完整跑通一套融合。按顺序读,或者直接跳到你需要的那一节。

快速开始

lxisi 的工作流和普通播放软件不一样:先有空间模型,再有投影配置。 这个顺序决定了校准能有多准,也决定了后面换素材时要不要重新调。

第一次打开,建议先做三件事:

  1. 确认用的是独立显卡。笔记本双显卡机器上,Windows 可能默认把 OpenGL 程序分给核显。
  2. 加载一个示例工程。安装目录 share/splash/ 下有现成的工程文件,先看它怎么组织场景和输入源。
  3. 用网格图校准,不要用内容画面。网格调准之后,换任何素材都不用重调。

确认显卡

启动后打开 config\splash.log,找到这两行:

config\splash.log
Renderer::init - GL vendor: NVIDIA Corporation
Renderer::init - GL renderer: NVIDIA T600 Laptop GPU/PCIe/SSE2

如果显示的是 Intel(R) UHD Graphics 或 AMD Radeon(TM) Graphics, 说明还在用核显,需要手动指定。

双显卡笔记本:NVIDIA 控制面板 → 管理 3D 设置 → 程序设置 → 添加 lxisi.exe → 首选图形处理器选「高性能 NVIDIA 处理器」。 或者用系统的「设置 → 系统 → 显示 → 图形设置」添加程序并选高性能。

安装与 Blender 插件

Windows 上不需要编译,解压安装包就能用。如果你打算用 Blender 建模型, 还要额外装一个插件,它是把场景导出成 lxisi 配置的桥梁。

Windows 安装包

  1. 下载 ZIP,解压到任意目录
  2. 双击 lxisi-1.1.1-win64.exe,一路下一步
  3. 许可协议是 GPLv3,接受后继续

装完在开始菜单能找到,或者直接搜 lxisi。

卸载和普通软件一样,在「应用和功能」里删掉即可。 工程文件和日志不会被删,需要的话手动清理。

依赖库

安装包已经带齐了运行时,下面这些只是让你知道它在用什么:

库作用是否必需
FFmpeg读写视频文件必需
OpenGL渲染,由显卡驱动提供必需(4.5 Core)
GSL校准计算的数学库必需
shmdata从共享内存读视频流可选
PortAudio音频输入输出、时间码可选
Python脚本控制可选
GPhoto用相机做色彩校准可选

其余还有 GLFW、ImGui、ZMQ、GLM、Snappy、JsonCpp、stb_image、libltc 等, 都已内置,不用单独装。

Blender 插件

安装包里附带 blenderSplash.zip,这个插件能做两件事:

  • 在 Blender 里搭一个草稿场景(带纹理的模型 + 相机),导出成 lxisi 的配置文件
  • 通过 shmdata 把 Blender 里的网格和纹理实时推给 lxisi

安装步骤:

  1. Blender → Edit → Preferences → Add-ons
  2. 点右上角 Install from File…
  3. 选 blender_splash_addon.tar.bz2(或安装包里对应的 zip)
  4. 在列表里勾选启用,它会出现在 User 分类下
两个前提:Blender 需要 2.80 或更新; Python 环境里要有 Numpy,否则插件装了也跑不起来。

界面导览

控制面板默认出现在程序创建的第一个窗口里。如果启动时没看到它:

  • Ctrl + Tab — 在已有窗口里显示控制面板
  • Ctrl + Space — 新开一个窗口显示控制面板

面板分成七个标签页,各管一件事:

标签中文叫法作用
Graph场景图所有对象和它们的参数都在这里,包括窗口、相机、媒体、模型之间的连接关系
Meshes模型切换 3D 模型文件
Medias素材更换输入文件,配置滤镜,把媒体接到其他节点
Cameras相机 / 校准投影面的全局视图,可切到任意相机。几何校准就在这里做
Warps变形投影变形。3D 模型无法完美还原表面时,用格栅微调
Textures纹理所有纹理与滤镜,用来检查渲染管线的中间结果、定位问题来源
Options选项选项与命令,例如计算融合图

面板底部固定显示三样东西:性能计数器、日志、当前主时钟。

相机视图操作

操作功能
右键拖动旋转视图
Shift + 右键平移视图
Ctrl + 右键缩放
Ctrl + W线框模式(显示顶点,校准用)
Ctrl + T纹理模式(显示实际画面)

选中某个相机时,它的画面范围会用橙色接缝高亮,方便确认是哪台投影仪。 默认选中的是总览相机(不输出到任何投影仪)。

配置入门

这一节从零讲清楚配置是怎么组织的:场景图里有什么节点、窗口和相机怎么对应到 物理输出、资源文件放在哪。做完之后你就能自己搭一套配置,不用每次从示例改。

不需要投影仪也能跟着做,界面操作是一样的。校准部分见后面的单投影和多投影章节。

先存一份自己的配置

不要直接在默认配置上改,先另存一份:

  1. 启动 lxisi,选中控制面板那个窗口
  2. File → Save configuration as…
  3. 选好目录,填文件名,回车保存

然后重新打开它:File → Open configuration,双击刚才那个文件。

你会发现画面全黑了。这是正常的——另存配置时,模型和图片这些资源文件 并没有跟着复制过去。后面「加载资源」那一节会处理。 想看网格轮廓,先按下面切到线框。

切线框:Cameras 标签 → View 菜单 → Switch wireframe/textured。快捷键是 Ctrl + W。

看懂 Graph 标签

按 Ctrl + Tab 显示控制面板,或者 Ctrl + Space 单独开一个窗口。 点 Graph 标签,左边是场景图,右边是当前选中对象的属性。

在场景图里移动:

  • 平移画布:按住中键拖动,或右键拖动时按住 Alt
  • 移动节点:左键拖动
  • 找对象:Select 菜单里按名字选
  • 连线:Shift + 左键从一个节点拖到另一个

案例:一块屏 + 两台投影

假设你的显示器是第一块屏,两台投影是第二、第三块,分辨率都是 1920×1080。 先在系统显示设置里把它们并排排列、中间不留空隙, 这个顺序决定了后面 position 怎么填。

加一台相机

  1. Add 菜单 → Other → Camera,图上多出 camera_001
  2. 左键选中它
  3. Shift + 左键点 window 节点,建立连接

节点挤在一起看不清的话,View 菜单 → Reorder graph 自动排版。

让画面显示出来

  1. 左键选中 object 节点
  2. 按住 Shift 左键点 camera_001,把模型连到新相机上

改尺寸和位置

节点属性值原因
windowsize3840 × 1080装两块 1920×1080 的画面
windowposition1920, 0从第二块屏开始,跳过显示器
camerasize1920 × 1080对应第一台投影
camera_001size1920 × 1080对应第二台投影

position 是相对整个桌面坐标系算的。如果你的显示器排在左边, 数字就要跟着变——原则是让 window 正好盖住两台投影那两块区域。

加载模型和图片

安装目录 share/splash/ 下有现成的 color_map.png 和 wall_corner.obj,拿来练手正合适。

  1. Medias 标签,选中 image 节点,点 path 属性右边的 …,选 color_map.png
  2. Meshes 标签,选中 mesh 节点,同样点 …,选 wall_corner.obj

这时候画面应该出来了。剩下的就是按现场情况调整,然后去做校准。

单投影实战:墙角校准

这是官方入门教程的流程,目标是把默认模型对齐到真实的墙角上。 做完这一遍,你就掌握了校准的核心操作。

准备

  • 一台电脑
  • 一台投影仪
  • 一个 90 度墙角(两面相邻的墙,不需要地板和天花板)

第一步:打开并连接投影

启动后会有两个窗口:控制面板和投影窗口。默认模型就是墙角,分辨率 1280×720。

接上投影仪并开机,调好对焦,让画面清晰。

第二步:把窗口分到正确的屏幕

控制面板应该在显示器上,投影窗口应该在投影仪上。如果不是:

  • 拖动标题栏把控制面板移到显示器
  • 把投影窗口拖到投影仪
  • 或者在 Graph 标签里选中该窗口,在右侧 fullscreen 属性里直接选投影仪

投影窗口应该铺满整块屏幕。分辨率不一致时,先调整投影仪的输出分辨率。

第三步:设置校准点

进入 Cameras 标签,按 Ctrl + W 切到线框模式,只看网格和顶点。

在真实墙角的对应位置贴上标记(贴纸或铅笔),需要 6 个点。

对每个点重复以下操作:

  1. 左键点击模型上对应的顶点,选中后会出现一个球包围它
  2. 视图中央出现一个十字,这就是该顶点的目标位置
  3. Shift + 左键点击画面任意位置,十字会移到光标处
  4. 用方向键微调,Shift 更慢、Ctrl 更快
  5. 把十字对准墙上那个标记点

选错了:Ctrl + 左键点击该顶点可取消选择。 想修改已设的点,重新选中它再移十字即可。

顶点在背面看不到时,用右键拖动旋转模型。

第四步:执行校准

六个点都设好后,在 Cameras 标签打开 Calibrate 菜单, 选 Calibrate camera。或者鼠标悬停在视图上按 C。

线框模型应该会贴合到真实墙角的形状上。如果没变化,说明点的位置有问题,重新检查。

第五步:放视频

进入 Medias 标签,列表里有一个输入项:

  1. 选中它
  2. 把类型从 image 改成 video
  3. 把 file 属性填成视频文件的完整路径

视频就会按模型上生成的 UV 坐标贴到墙角上。

用 3D 模型校准:盒子示例

上一节是用软件自带的墙角模型练手。这一节换成真实物体:给一个盒子建 3D 模型, 导出配置,然后校准投影,最后把视频贴上去。

完整流程四步:

  1. 给要投影的物体建 3D 模型
  2. 从 Blender 导出草稿配置
  3. 在 lxisi 里打开,校准投影仪
  4. 加载内容播放

你需要:装好 lxisi 的电脑、连好的投影仪、一个盒子形状的物体。

第一步:建模型

lxisi 只管投影仪,不管建模——所以模型怎么来是你的自由。 按真实尺寸在 Blender 里画一个是最直接的办法,也可以用摄影测量。 下面假设你已经会基本的 Blender 操作。

关键一点:每台投影仪至少要能看到 7 个顶点才能校准。 如果你的模型就是个普通立方体,顶点不够,得先细分(Subdivision)加几个。

还需要 UV 坐标,否则没法做纹理映射。操作:

  1. 选中模型,按 Tab 进入编辑模式
  2. 按 U,选 Smart UV Project
  3. 再按 Tab 退出编辑模式

第二步:配置,两条路

两种方式各有优势,看你的习惯:

方式优点适合
在 lxisi 里配 不用学 Blender,省掉导出导入,起步快 模型是别的软件做的,或者配置比较简单
用 Blender 插件 可以预先摆好模型和相机位置,后续校准更省事 场地复杂、投影仪多、需要精确预设

方式 A:在 lxisi 里配

照「配置入门」那一节做一遍,把窗口、相机、尺寸都设好。 唯一不同的是:只留一台相机,多出来的删掉或者别加。 配完存成独立文件。

然后从 Blender 导出模型,导进来:

  1. Blender 里选中模型,File → Export → Wavefront (.obj)
  2. 勾上 Selection Only(只导模型,不带场景其他东西)
  3. 关掉材质导出(lxisi 用不上)
  4. 导出到配置文件旁边,方便管理
  5. 回到 lxisi,Meshes 标签 → 选中 mesh → … → 选这个 OBJ

方式 B:用 Blender 插件

在 Blender 的 Splash 节点编辑器里搭一棵节点树。典型结构是这样:

  • GUI 窗口:用专门的 GUI 节点生成,显示控制面板
  • 投影窗口:用 Window 节点,fullscreen 设成 1(第二块屏)
  • Camera:接在 Window 上,承载投影仪参数
  • Object:接在 Camera 上
  • Mesh 节点:数据源选 Blender 里那个盒子对象
  • Camera 节点:数据源选 Blender 相机
  • Image 节点:选 color_map.png(校准用的彩色网格图)

搭好之后,点 World 节点上的 Export configuration, 它会把所有连着的节点导出成一个 JSON。命名成 configuration.json。 模型会自动导到同一个目录。

启动方式两种:

  • 把 JSON 拖到 lxisi 任意一个窗口上
  • 命令行:lxisi configuration.json

会出现两个窗口。投影那个显示盒子(还没校准,位置是错的), 另一个是空的——在上面按 Ctrl + Tab 或 Ctrl + Space 调出控制面板。

第三步:校准

Cameras 标签,选中你建的那台相机。现在 3D 视图里的画面就是投影仪打出来的(除了缩放)。

按 Ctrl + W 切线框,开始设 7 个点:

  1. 左键点模型上的一个顶点,它周围出现一个球
  2. 视图中央出现十字,代表这个顶点的目标位置
  3. Shift + 左键点画面任意处,十字移过去
  4. 看着真实物体,把十字对到该顶点对应的物理位置
  5. 方向键微调,Shift 更慢、Ctrl 更快
  6. 换下一个顶点,重复

选错了:Ctrl + 左键点该顶点取消。想改已设的点,重新选中再移十字。

7 个点设完,鼠标停在 3D 视图上按 C(或者 Calibrate 菜单 → Calibrate camera)。线框应该贴合到真实盒子上了。

按 Ctrl + T 回到纹理模式看效果,满意就 Ctrl + S 保存。

第四步:放视频

Medias 标签,选中那个输入对象,把类型从 image 改成 video, 然后 file 属性填视频的完整路径。

视频就会按 Blender 里做的 UV 坐标贴到盒子上。

往下还能做什么

  • 多台投影:流程完全一样,每台配一个相机、各自校准,数量基本不限
  • 算融合:全部校准完之后按 Ctrl + B,重叠区的亮度自动计算
  • 实时联动:用 Blender 3D 视图侧栏里的 Splash 面板,可以把改过的网格实时推给 lxisi

多投影实战:穹顶校准

多投影的核心思路和单投影一样,但多了一个「先低精度后高精度」的两轮策略: 先用极简模型把相机参数校准出来,再换成精细模型提升画面质量。

整体流程

  1. 建一个低精度校准模型(只要关键点)
  2. 用 Blender 插件导出配置
  3. 在软件里逐台校准投影仪
  4. 建一个高精度模型并替换
  5. 第二轮微调
  6. 计算融合图
  7. 加载内容播放

第一步:低精度校准模型

校准至少需要 6 个点。模型只需要包含这些已知精确位置的点—— 边缘交点、接缝、或者你现场量出来的任意点。

在 Blender 里:选中模型 → Tab 进编辑模式 → 按 U 选 Smart UV Project → Tab 退出。

UV 坐标的作用是让校准期间能显示图案,方便判断对齐情况。

第二步:用 Blender 插件导出配置

节点树大致是这样(从右往左读):

节点作用
World根节点,所有节点都要直接或间接连到它
GPU代表显卡。双显卡机器要建两个
GUI 窗口显示在控制用显示器上
投影仪窗口跨所有投影仪,例如三台 1080p 就是 3840×1080,所有相机连到这里
Object连接所有相机,输入来自 Image 和 Mesh
Image校准用的图案,例如自带的 color_map.png
Mesh在 Object 字段填校准模型名称

投影到穹顶内部时,Object 节点的 Culling 要设成 back。

在 World 节点上点 Export configuration,导出成 configuration.json。

第三步:逐台校准

启动:

命令行
lxisi configuration.json

或者在文件管理器里直接把 json 拖到程序上。

按 Ctrl + Tab 打开控制面板,进 Cameras 标签。

先隐藏干扰:

  • View 菜单 → Hide other cameras,或悬停视图按 H
  • 在相机列表里 Ctrl + 左键点击某台相机,可单独隐藏或显示

校准第一台:

  1. 线框模式(Ctrl + W)
  2. 选中顶点 → 出现球和十字
  3. Shift + 左键移动十字到真实位置,方向键微调
  4. 至少 6 个点,然后悬停视图按 C 校准
第一台不用急着微调。校准模型精度很低,这时候看不出真实质量。 先把所有投影仪都跑完一轮,再统一优化。

校准第二台:需要让它和第一台匹配。

  • Ctrl + T 切到纹理模式
  • 在列表里选中第二台,用 Ctrl + 左键隐藏第三台
  • 用右键/Shift/Ctrl 移动相机,大致对齐第一台的画面
  • 在线框和纹理之间切换,找到两台都覆盖的顶点
  • 设至少 6 个点并校准

第三台:同理,隐藏第二台再校准。

第一轮完成后按 Ctrl + S 保存。

第四步:换成高精度模型

新建一个精细模型(例如切半的 UV 球体),直径必须和校准模型完全一致。

UV:Tab → A 全选 → U 选 Unwrap → Tab 退出。

导出:File → Export → Wavefront (.obj),勾选 Selection Only,取消 Write Materials。

回到软件,进 Meshes 标签,把 mesh 对象的源文件改成新模型,Ctrl + S 保存。

第五步:第二轮微调

  • 切线框模式(Ctrl + W),偏差更容易看出来
  • 移动已有点后,软件会尽量自动重算;没自动就悬停视图按 Ctrl + C 强制重算
  • 某块区域没有校准点,至少补一个
  • 尽量缩小顶点和十字之间的距离——距离越大,几何误差越大

校准到极限仍然不理想(充气穹顶这类表面很常见),就用 Warps 标签的格栅做局部变形。

第六步:计算融合

按 Ctrl + B,或 Calibrate 菜单 → Compute blending。

算完记得按 Ctrl + T 回到纹理模式看效果。

第七步:放内容

进 Medias 标签,把类型改成 video,file 填视频路径。

快捷键速查

快捷键功能
Ctrl + Tab打开控制面板
Ctrl + Space在新窗口打开控制面板
Ctrl + W线框模式
Ctrl + T纹理模式
H(悬停视图)隐藏其他相机
Ctrl + 左键(相机列表)隐藏 / 显示指定相机
Ctrl + 左键(顶点)取消选中顶点
Shift + 左键移动十字到光标位置
方向键微调十字(配 Shift 更慢、Ctrl 更快)
A(悬停视图)显示所有十字
C(悬停视图)校准相机
Ctrl + C(悬停视图)强制重新计算校准
Ctrl + B计算融合图
Ctrl + S保存配置

1 · 建立空间模型

模型的作用是把「真实空间」和「虚拟空间」对齐。有了它,投影仪的位置、朝向、视场角才有参照, 融合带也才能按几何关系算出来。

用 Blender 建(推荐)

按现场真实尺寸把要投影的面建出来:墙、地面、装置外壳、转角。 不需要细节材质,几何形状准确就行。

安装目录里的 blenderSplash.zip 是配套插件。启用后可以把场景直接导出成 lxisi 能读的草稿配置,省去手工填坐标。

不建模也能用

如果现场就是几面平面墙,完全可以跳过 Blender,直接在软件里从零配置投影仪和面。 异形面或复杂空间才真正需要模型。

尺寸要准。模型里 1 单位 = 1 米,现场量一遍墙宽和投影距离。尺寸错了,后面所有校准都是在错的基准上做。

2 · 定义投影仪

每台投影仪需要描述清楚四件事:

  • 位置 — 在空间中的坐标
  • 朝向 — 镜头指向哪个方向
  • 视场角 — 由镜头焦距决定,一般在投影仪规格书里
  • 光学偏移 — 镜头位移(Lens Shift),影响画面在光锥中的位置

这几个数字决定了光锥怎么打在模型上。同一面墙由多台投影覆盖时, 重叠部分会被自动识别出来,作为融合带的计算依据。

先填规格书上的值,再微调。视场角和光学偏移按厂家给的数字填, 剩下的偏差靠现场微调。不要一上来就凭感觉乱调,会越调越偏。

3 · 校准与融合

校准分两步:几何对齐,然后是融合带。

几何对齐

  1. 切换到网格显示,投出测试网格图
  2. 微调每台投影的位置与镜头参数,让网格线在重叠区连续
  3. 检查边角是否拉伸,必要时调整视场角

判断标准很直观:网格线在两台投影的交界处应该是一条直线,不能错位、不能弯折。

融合带

重叠区的亮度由软件按几何关系自动计算衰减曲线,让两台投影叠加后的总亮度等于单台亮度。 如果现场墙面反光不均,可以手动微调曲线。

融合是逐帧计算的,改参数立刻能看到结果,不需要重新渲染或重启。

色彩校正

不同型号或不同灯泡寿命的投影仪,白色会有色差。重叠区尤其明显。 可以对单个通道做色彩校正,让接缝看不出来。

4 · 接入内容与输出

输入源

可以同时混用多种来源:

  • 视频文件 — 常见格式,以及 Hap / Hap Alpha 等适合实时播放的编码
  • 实时输入 — 摄像头、采集卡
  • NDI — 网络视频流,需另行安装 NDI Runtime
  • 共享内存 — 从其他软件直接取画面

输出通道

通道数不设上限。每个物理接口都可以是一个通道,也可以走 NDI 送到另一台机器。 每个通道独立做几何校正与融合。

多显卡可以并行输出,但每块卡都要满足 OpenGL 4.5。 跨卡输出建议同型号同驱动版本,避免同步问题。 集显加独显混用时,集显只建议跑控制界面,不要用于投影输出。

5 · OSC 与 Python 控制

现场通常需要由灯光台或中控系统接管画面切换。lxisi 提供 OSC 接口, 也支持用 Python 写自定义逻辑。

OSC

默认监听 UDP 9090,但默认是关闭的,需要在工程里显式启用。 可以限定只接受指定来源 IP 的指令。

Settings → Startup and control
Enable OSC server   on
Port                9090
Accept only from    192.0.2.50      # 留空 = 接受全部来源

Python

内置 Python 3.14 运行时,脚本随工程加载,不需要额外装环境。 适合做定时切换、读外部数据、联动其他设备这类逻辑。

时间码

支持 LTC 时间码输入,从音频接口读取。 和视频服务器或灯控系统保持同一时间轴时用得上。

6 · 开机自启与无人值守

展馆、展厅、固定安装这类场景,要求设备通电就出画面,不需要人操作。 这一节是完整配置流程,照着做完就能做到「断电重启后自动恢复展出」。

先说一个前提:为什么不能装成 Windows 服务

lxisi 需要 OpenGL 4.5 渲染。Windows 服务运行在 Session 0, 那里没有桌面、没有显卡驱动上下文,OpenGL 无法初始化,程序会直接失败。

所以正确的链路是:

启动链路
开机 → 自动登录桌面 → 触发启动 lxisi

第一步:软件内开关

菜单栏 Settings → Startup and control...,可设置:

项目作用
Start with Windows登录时自动启动,写入注册表 HKCU\...\Run
Start headless启动时不创建输出窗口(下次加载配置生效)
Enable OSC server启用 OSC 控制
PortOSC 监听端口,默认 9090
Accept only from只接受指定 IP 的指令,留空表示接受全部
注意:软件内的开关只负责「登录后自动启动程序」。 如果需要开机后无人值守自动登录,还要按下面的步骤配置自动登录。

第二步:设置自动登录

不设自动登录,开机就停在登录界面,程序根本不会被触发。

Win + R
netplwiz

选中你的账户 → 取消勾选「要使用本计算机,用户必须输入用户名和密码」→ 应用 → 输入两次账户密码。

如果是域账户或使用了 PIN,这一步可能不可用。替代方案:用微软 Sysinternals 的 Autologon 工具,或组策略配置。

第三步:任务计划程序(推荐)

相比「启动文件夹」,任务计划程序多了两个关键能力: 崩溃自动重启、可设启动延时(等显卡驱动就绪)。

Win + R
taskschd.msc

右侧点「创建任务」(不是「创建基本任务」)。

「常规」选项卡

项目设置
名称lxisi 自动启动
用户账户选你的账户,不要选 SYSTEM
运行方式只在用户登录时运行
权限勾选「使用最高权限运行」

「触发器」选项卡 → 新建

项目设置
开始任务登录时
延迟任务30 秒(等显卡驱动就绪,强烈建议)
启用勾选

「操作」选项卡 → 新建

项目设置
操作启动程序
程序或脚本wscript.exe
添加参数"D:\lxisi\lxisi-launcher.vbs"
起始于D:\lxisi

这里用 wscript.exe 调用 VBS 启动器,目的是隐藏黑色控制台窗口。 直接启动 lxisi.exe 会弹出一个命令行窗口。

「设置」选项卡

项目设置
允许按需运行任务勾选
任务失败重新启动1 分钟
尝试重启次数999(相当于一直重试)
运行超过以下时间则停止取消勾选
已运行则不启动新实例是
使用电池时停止取消勾选
这一项是展馆设备的关键。程序崩了会被自动拉起来, 不用等人到现场。次数设成 999,实际等于无限重试。

备选:启动文件夹

不想折腾任务计划程序的话,最简单的方式:

Win + R
shell:startup

把 lxisi-launcher.vbs 的快捷方式拖进去。

缺点:崩溃后不会自动重启,也不方便设延时。 只适合临时演示、非关键场合。

配置启动器

打开 lxisi-launcher.vbs,改这两行:

lxisi-launcher.vbs
' 工程文件完整路径,留空则加载默认配置
PROJECT = "D:\projects\venue.json"

' 是否追加 -s 完全静默(默认 False)
SILENT = False
不要把 SILENT 设成 True。-s 参数会同时停止写入日志文件, 出问题时完全没法排查。控制台窗口的隐藏是由启动器的隐藏窗口参数完成的, 与 -s 无关。保持 SILENT = False,窗口一样不会显示,但日志照常记录。

工程文件建议按场馆分别存成 .json,放在程序目录外面(如 D:\projects\), 这样升级程序时不会覆盖工程。

配套系统设置(必做)

展馆设备上这些不设置,早晚出问题:

设置位置原因
关闭快速启动控制面板 → 电源选项 → 选择电源按钮功能快速启动会导致多显示器枚举异常
电源计划改高性能控制面板 → 电源选项节能模式降频,影响帧率
关闭休眠powercfg -h off(管理员)避免误休眠导致画面中断
关闭屏保设置 → 个性化 → 锁屏界面 → 屏幕保护程序 → 无屏保会遮挡画面
关闭睡眠设置 → 系统 → 电源 → 睡眠 → 从不同上
关闭自动更新重启组策略 / 设置活动时间半夜自动重启会中断展出
关闭通知设置 → 系统 → 通知弹窗会盖在画面上

验证是否生效

  1. 重启机器,等待 1 分钟
  2. 检查进程:tasklist | findstr lxisi,有输出即成功
  3. 检查日志:config\splash.log 最后几行应有 Scene started.
  4. 测试崩溃重启:任务管理器结束 lxisi.exe,等 1 分钟再查进程,应自动恢复

常见问题

开机后程序没起来

按顺序排查:有没有自动登录 → 任务计划里「上次运行结果」是什么 → 手动双击启动器能否起来 → 看日志有没有新内容。

起来了但黑屏

大概率是 OpenGL 版本不足或显卡驱动没就绪。把触发器延迟从 30 秒改成 60 秒再试。

还是弹出黑色命令行窗口

说明任务里直接调了 lxisi.exe。改成 wscript.exe + VBS 启动器。

怎么临时停掉自启

任务计划里右键任务 → 禁用。或者演出期间手动关掉程序,不会自动再起来。

系统要求

项目要求
操作系统Windows 10(1809+)/ Windows 11,仅 64 位
图形接口OpenGL 4.5 Core Profile
CPU现代四核及以上
内存16 GB(4 通道内);32 GB(5 通道以上或 4K)
存储SSD,本体约 300 MB,媒体建议独立 SSD
网络非必需,不联网不上报

显存建议:1–2 通道 1080p 用 4 GB;3–4 通道用 8 GB;5–8 通道用 12 GB 以上; 3–4 通道 4K 用 16 GB 以上。

完整对照表见 下载页的系统要求。

常见问题

启动后画面卡顿,日志里一堆 36055 错误

先看日志里的 GL renderer 是哪块显卡。如果是核显,说明 Windows 把程序分给了集成显卡, 共享显存撑不住多通道融合。到显卡控制面板指定高性能独显。

必须装 NDI 吗

不必须。只在需要接收网络视频流时才用得上。没装也不影响其他功能, 日志里会有一条 NDI 库加载失败的警告,可以忽略。

一定要用 Blender 建模吗

不一定。平面墙完全可以直接在软件里配。异形面或复杂空间用 Blender 会明显省事。

能带多少台投影仪

软件层面不设上限,实际受限于显卡物理输出接口和显存。 多显卡可并行,但每块卡都要满足 OpenGL 4.5。

软件会联网吗

不会。不联网、不上报数据、不检查更新。现场没有外网也能正常跑。

为什么只能跑 Windows 10 以上

三个底层依赖同时卡住:编译工具链基于 UCRT、内置 Python 3.14 要求 Win10+、 着色器使用 OpenGL 4.5(Win7 时代驱动普遍不满足)。

许可与来源

lxisi 1.1.1 基于 Splash 0.12.6 构建,以 GNU General Public License 第 3 版发布。

本产品是 Splash 的修改版本,并非上游原始版本。主要修改包括:

  • 品牌标识改为 lxisi(窗口标题、关于窗口、程序图标)
  • 新增完整中文界面(约 410 条界面文案),选过的语言会被记住
  • 修复 Warps 面板每帧重建 VBO/VAO 导致的显存持续增长
  • 日志文件写入 UTF-8 BOM,避免中文 Windows 环境下乱码
  • 可执行文件更名为 lxisi.exe
  • 跨平台字体查找,支持中文字符集按需加载

lxisi 由我们独立维护,与 Splash 上游团队没有隶属关系,也未获其背书。 「Splash」是其各自所有者的项目名称,「lxisi」为本产品名称。

依据 GPL v3 第 6 条,拿到本产品安装包的人,都有权索取对应的完整源代码, 通过联系页面说明用途即可。

第三方组件(FFmpeg、OpenGL/GLAD、GLFW、Dear ImGui、jsoncpp、ZeroMQ、liblo、 PortAudio、OpenAL、OpenCV、Python、libltc、NDI SDK)沿用各自的原始许可证。